Commit Graph

65 Commits

Author SHA1 Message Date
nethack.rankin
0a9b85159e doorganize() tidying
I've cleaned up the #adjust routine somewhat while revising it to
support splitting stacks as well as moving them, then have separated the
cleanup from the more substantial changes.  The most significant change
here is that #adjust will give up early if used when inventory is empty;
the user used to be forced to choose a letter from an empty list in that
case, then it gave up when no object was selected.  There's also a minor
change for users who turn `fixinv' off; the prompt's list of likely
candidate letters for destination slot is reduced to one letter beyond
current usage instead of showing the rest of the alphabet.  (Picking any
letter--which users can still do--beyond current usage results in moving
the adjusted item to the end of the list, although it ultimately ends up
with a different letter than the user chose because adjusting from some
other slot frees up that slot; all items past it--including the new last
element--effectively move up one letter [or more if merges occur].)
2004-11-06 01:51:08 +00:00
nethack.rankin
c090c74eec pickup into quiver
Despite lack of feedback from the beta testers about it, add the code
which tries to stack an object being added to inventory with the quiver
before trying with other carried objects.  Only matters to user if quiver
is non-empty and one or more other slot(s) are compatible with it, but
that's not uncommon for someone who starts a rogue by splitting the initial
daggers into separate wield and throw slots.  Firing a dagger from quiver
and then having it merge with wielded weapon instead of back into quiver
when picked back up leads to tedious inventory manipulation.  Assigning
different names to the two stacks solves this, but can't help when picking
up an unnamed item which is otherwise compatible.  (A rogue with starting
daggers wouldn't encounter that since unnamed ones won't be sufficiently
identified to stack, but any character who just gathers unID'd daggers and
uses them for both melee and throwing has a chance of running into the
"picked up into less desireable slot" trap whenever new ones are found.)
2004-11-06 01:19:25 +00:00
nethack.rankin
3df53e952c loadstone dropping fix
Fix the reported problem of bad inventory management if the user
specified a count (with traditional menu style) when attempting to drop
part of a stack of cursed loadstones.  After the "you can't drop that"
message, it tried to undo the stack split, but splitobj was changed
sometime back and the undo hack wasn't adjusted to account for the fact
that it needed to merge with the previous object instead of the next one.
The result was that it would incorrectly increment the count of the next
item instead of the original loadstone, or crash in canletgo() if the
split off stone was the last item in the list.

     This prevents cursed loadstones from being split (via getobj()'s
count handling) in the first place, so there's nothing to undo later.
It still uses a similar kludge so that the "can't drop that" message can
be adjusted, but it's now a simpler kludge and I hope a more robust one.
2003-12-03 07:10:24 +00:00
nethack.rankin
cf1b96c0e7 couple of new routines (trunk only)
Groundwork for forthcoming stethoscope fix:  add an object list
traveral routine (there must be something like this already, but I
couldn't find it...) and a couple of timer access routines.
2003-11-20 04:40:46 +00:00
cohrs
8ee1ecd2ea hiding under a cockatrice corpse
Reported a while back, a (stonable) hiding monster will hide at a location
containing only a cockatrice corpse.  While it would be interesting to
allow monsters to try, and stone themselves as a result, I chose the
simpler fix which is to not have monsters hide in such situations.  I found
the hiding code was duplicated in several places, so I moved it into a new
hideunder() function that works for both the hero and monsters.
2003-10-10 23:01:42 +00:00
nethack.allison
4775dd3cbf headings in option menus
There was a great deal of inconsistency in
different menus on how headings were displayed.
This allows the user to select what they like best.
I was motivated to do this, because I wasn't satisfied
with the appearance of ATR_INVERSE in the menus
on win32tty, and several of them specified it.
2003-10-05 19:56:22 +00:00
nethack.allison
22ce5ed6f2 trunk only: preserving context (src files)
Pat Rankin wrote:
> collect them all into some new struct and
> save that separately rather than jamming more non-option stuff
> into struct flags.

This patch:
- collects all context/tracking related fields from flags
  into a new structure called "context."
It also adds the following to the new structure:
- stethoscope turn support
- victual support
- tin support
2003-09-21 11:52:54 +00:00
nethack.allison
724ac2670c more overlay bits
Although the overlay stuff is destined to be
removed someday, this patch just makes the
use of STATIC_DCL, STATIC_OVL consistent
in the trunk.

[As a side pointless experiment, I was able
 to build a working  8086 port of 3.4.2 after
 this change that worked correctly in limited
 testing right up until it came time to enter
 Ft. Ludios., where it couldn't allocated the
required amount of memory.]
2003-09-05 14:59:53 +00:00
nethack.allison
416412f92b Remove vestiges of old overlay source split
[trunk only]
2003-09-05 02:45:18 +00:00
nethack.allison
f65a13cfbe look vs pickup
I encountered a look vs pickup cockatrice corpse
bug today.

If you looked at a location with ':', you
would instantly get
"Touching the cockatrice corpse is a fatal mistake..."
but if you used "m," you got the full list of
things at the location to choose from.

This patch makes the behaviour consistent
and more informative to the player.
You now get the partial list of things felt
up until the cockatrice corpse is encountered,
and then you get the
"Touching the cockatrice corpse is a fatal mistake..."

Before, the code was never displaying the partially
built list because the feel_cockatrice() call was
happening before the window display call.
2003-06-01 15:54:41 +00:00
nethack.rankin
ad243c0286 cmdassist bits
If the player gives the 'T' command while not wearing any armor,
don't suggest "use 'R' to remove accessories" unless the character is
actually wearing accessories.  Likewise for 'R' while not wearing any
accessories, don't suggest "use 'T' to take off armor" unless wearing
some.

     Add missing amulet case to the silly_thing() handling for 'W' and
'T'.  Also handle boots, gloves, and lenses as plural in the message
there.  silly_thing() has been simplified a little bit in the process.
2003-05-26 17:34:28 +00:00
nethack.rankin
9a39064b8f more perm_invent handling
Keep permanent inventory window up to date when using charged items.
Also a status line bit for the #tip command.
2003-05-24 04:07:14 +00:00
cohrs
b53cdee210 U409 - hiding and eating bugs
Three related bug fixed, two reported in U409.
+ If you zapped a wand of cold downward while hiding underwater, the uundetected
flag was not reset (but the monster case was code correctly), resulting in
an impossible error on the next attack
+ If you finished eating something you were hiding under and were attacked,
another impossible would occur
+ While checking the eating gold case, I noticed that several cases would lose
gold on the floor if the attempt to eat it failed

The first case is fixed by resetting the flag just like the monster case.
The other cases are fixed by adding code to useupf to deal with this.
eatspecial and floorfood were modified to allow useupf to be called, and
fix the 3rd bug in the process.
2003-04-14 01:09:30 +00:00
nethack.rankin
d0e4d1e31b #tip command - container access
Another fix to address the complaints about two-handed weapons being
rendered useless by 3.4.1's change to require free hands in order to apply
containers.  Some players now fear to wield two-handed weapons because a
curse would make accessing their bag impossible, which is doubly nasty if
that's where they have scrolls of remove curse or potions of holy water
intended to deal with cursed items.  The same situation applies for cursed
one-handed weapon combined with cursed shield, so some are now claiming
that 3.4.1 has made two-weapon combat be even more attractive than before.

     This implements #tip, a new command that causes a container at the
current location or carried in inventory to have its contents emptied
onto the floor.  Hero's hands don't need to be free at the time but tipping
a floor container requires limbs; tipping an inventory container doesn't
need hands or even limbs.  The contained items don't pass through inventory
during the process, so don't cause objects (loadstones, crysknives, scrolls
of scare monster?) to go through their special handling unless it's part of
normally dropping to the floor.  Tipping a bag of tricks behaves the same
as applying it (one monster is released, and it only becomes empty if
that happened to be the last charge) and items tipped out of a cursed bag
of holding have their normal cursed bag chance (1/13) of being destroyed.
Tipping an inventory container while levitating or during unskilled riding
behaves similar to normal drop--from a height, so some fragile items break.

     Players have wanted this feature to get gray stones out of chests or
heavy corpses out of ice boxes but I didn't care much about that; losing
access to your bag is more significant.  I'm pretty sure that there was a
user patch to do something like this floating around at one time, but I
couldn't find it when I looked, so I implemented #tip totally from scratch.

     Bug?  Extended commands which lack meta-key shortcuts are not listed
in the help files displayed by the '?' command....
2003-04-03 10:56:46 +00:00
cohrs
79735fde8b gold and touchstones
Implement Pat's suggestion of allowing even identified touchstones
to test gold, removing the getobj hack recently added.  This actually
brings the touchstone a bit more in line with the data.base entry.
2003-03-15 21:42:34 +00:00
cohrs
8de1ed25c0 yet another grammar bit
<Someone> mentioned a bad grammar bit in the newsgroup.  Backported
to 3.4.2 as well to save us from many repeat bug reports.
2003-03-09 17:47:05 +00:00
nethack.allison
b7be80ab22 fix other way to get "silly thing to wear"
It was possible for the code to end up in do_wear.c
to put out the "silly thing to wear" message.
2003-01-31 13:19:09 +00:00
nethack.allison
bd0541679a Using 'P' to put on armour or 'W' to wear a ring
resulted in "That is a silly thing to [put on | wear]".

But those two cases really aren't so "silly", so adjust
the messages to better explain why the game objected
to the action and point new players at the appropriate
command.

Also adds a cmdassist message for the case where
'R' or 'T' have no appropriate items to point
new players to the correct command. (That can be
turned off with !cmdassist, of course.)

Also adds a const to a recent shade patch by request.
2003-01-25 18:41:25 +00:00
nethack.rankin
b9f9a6415b fix B17005 - autoquiver bug
hold_another_object() will try to quiver the object being held if
it's a weapon (or gem/rock ammo) and the autoquiver option is enabled and
the quiver is empty.  It was doing that even if the object had just merged
with primary or secondary weapon, resulting in it being equipped in two
slots at once.  (Easiest way to reproduce it is via wish+wield+wish for
similar item, but it could also occur when stealing while in nymph form.)

     This also addresses one of the old items on <Someone>'s list:  if you
carry a sling equipped in the alternate weapon slot, include gems and
rocks as likely candidates for quivering same as when wielding a sling.
This extends that to autoquivering; ammo appropriate for your alternate
is now given preference over arbitrary weapons (ammo for your wielded
weapon and arbitrary missiles still take precedence over alternate ammo).

     Bug?  pickup_object() is not autoquiver aware, hence autopickup isn't
either.

     Bug too (perhaps moot if the above is changed)?  Snagging a monster's
weapon with a bullwhip uses hold_another_object() so possibly autoquivers;
snagging an object off the floor with a grappling hook uses pickup_object()
so doesn't.
2003-01-25 04:46:11 +00:00
nethack.allison
d1c2a37deb fix buglist entry: menu upon request
For "traditional" menu style, pickup and #loot/apply can't accept an 'm'
response to bring up a menu upon request when all items involved are of
the same class, because the prompt where that response is allowed only
gets issued when multiple classes are present.
2003-01-11 17:22:58 +00:00
nethack.rankin
137bd330e4 fix B14021 - inconsistent menu styles
Menu styles `partial' and `full' will let you remove any type of
item from the three weapon slots via the 'A' command, but `traditional'
and `combination' would only do that for the primary weapon slot.  For
the alternate weapon and quiver slots, the item in question had to be
one which can normally be wielded or worn, otherwise when choosing the
object class letter you'd be told that it was "Not applicable."  And
for wearable items, you needed to be really wearing one of that class
(besides the quivered one) or else you'd get "not wearing any amulet"
or similar.
2002-12-14 11:53:22 +00:00
cohrs
b4664e981f B14009 order of altar feeling messages
Special case the altar feeling messages to avoid saying you're feeling
the altar and then saying there's an altar here.
2002-10-27 16:30:35 +00:00
cohrs
71480033c6 B12010 - boulders in throw menu for giants
When the player is poly'd to a giant, it was a bit odd that boulders
weren't listed in the throw menu, especially since the usual check for them
is throws_rocks.  Since statues are not appropriate, I added this thru yet
another ugly check in getobj.
2002-10-24 01:40:58 +00:00
nethack.rankin
a0067f97e2 luck artifact dependencies
Instead of adding a new artifact.h to pray.c, remove the existing
ones from attrib.c, invent.c, and mkobj.c.  This also updates the Unix
and VMS editions of Makefile.src; having stale dependencies in those
for other ports could cause unnecessary recompilation but can't break
anything in this case.
2002-10-09 07:06:08 +00:00
nethack.rankin
c3a9637ba7 touchstone use
Make touchstones more convenient to use after they're identified
by only listing unknown gems as likely candidates.  This doesn't prevent
other stuff from being rubbed on them, just alters the prompt string and
the subset of inventory shown for '?'.
2002-10-01 07:23:10 +00:00
nethack.rankin
abf1ee5797 fix B08011 - request for "wield" change
Implement's <Someone>'s suggestion that the currently wielded
weapon be included among the list of inventory candidates for the
wield command.  It affects the list of letters shown in the prompt
and the subset inventory displayed if you respond with '?'; it doesn't
change how wielding works or what item you can pick to wield.

     Do the same thing for quivering:  include any currently quivered
item among the choices.  Also include the secondary weapon as a choice
if you're not actively two-weaponing.
2002-09-28 06:48:25 +00:00
nethack.rankin
ef14456b3d eucalyptus leaf whistles
Add <Someone>'s patch that enables using the apply command
on eucalyptus leaves to produce a whistle effect.  Blessed leaves
behave like magic whistles; I added a chance for the blessing to be
used up in the process.

     The invent.c diff is almost all reformatting.
2002-09-26 07:26:03 +00:00
nethack.rankin
4d251c6688 fix B10003 - GOLDOBJ: BUC gold; identification
Curse and bless status has no meaning for gold.  Likewise
for erosion and other object flags controlling whether an item is
considered to be fully identified.
2002-09-24 03:20:22 +00:00
nethack.rankin
651e886d66 fix B12001 - ?--More--single line menu
From a bug report:
3.4.0 broke the ability to pick the only listed inventory letter when
user typed '?' during object selection and one candidate was listed on
the top line followed by --More--.

What do you want to throw? [b or ?*] ?
b - 7 +0 daggers (alternate weapon; not wielded).--More--b
<behaved as if user hit ESC instead of 'b' but didn't say "Never mind.">

(Dismissing --More-- the normal way and getting a new selection prompt
worked as usual.)  The problem was caused by changes in getobj's count
handling; the message_menu() routine isn't able to handle counts but
display_pickinv left the count as 0 while caller expects -1 for "count
not specified".

     This was a core bug but I put the fixes entry under "tty" since
no other interfaces are affected.
2002-09-17 06:35:49 +00:00
nethack.allison
02ed5c37c9 From the newsgroup, there was a discussion about how you
can't just blind yourself with a cream pie in your inventory
directly by applying it or by throwing it.

On 27 Jul 2002 14:11:06 GMT, <Someone> wrote:
> <email deleted> wrote:
>> <email deleted> (<Someone>) hypothesised:
>>
>> [cream pie]
>>> So I a)pply the pie. What I want to do is to hit MYSELF in the
>>> face with the pie, thereby blinding me and giving me T-P for
>>> just a few turns.
>>
>> Not a bad TTDTDTO ("Thing The DevTeam Didn't Think Of," which is
>> subtly different to a YANI, and not a bug; sorry, I seem to be
>> on a neologismathon today.)
> I tried throwing a cream pie upwards, hoping it would blind me,
> but no luck:
>
> "A cream pie hits the ceiling. What a mess!"
>
2002-07-27 20:48:45 +00:00
nethack.allison
40940991bb change GOLD_CLASS to COIN_CLASS 2002-07-08 23:25:53 +00:00
cohrs
40c4800613 B01016 - misplaced "you steal" message after being blasted by an artifact
I saw no straight-forward way to insert the message earlier in the
sequence, so...  I reasoned that you might not yet have a good grasp and
not be able to continue holding the object when reverting form.  So, I made
this into a drop case and made the drop message a rare past tense message.
Past tense is still OK for the other drop cases.
While testing this, I noticed you'd keep stealing even after reverting
form.  Added code to stop this.  Finally, there was a missing MON_NOWEP
call in the stealing code, added it.
2002-07-07 20:22:57 +00:00
cohrs
2c6a1eb7e1 R972 - rust monster eating gold
When !GOLDOBJ, player polymorphed to a rust monster that attempted to eat
gold in the inventory would fail to eat it, but the gold would be consumed
anyway.  Under GOLDOBJ, a later check would work around the invalid prompt.
2002-07-04 17:47:18 +00:00
cohrs
94837b78d4 hangups with temp gold in inventory
- Implement Michael's suggestion of marking temp gold put in inventory
so it can be cleaned up during restore.
2002-05-21 05:04:09 +00:00
kmhugo
31c824dbf3 digging rock vs. chopping wood
Refinement of the digging code:
* Picks should not chop down trees, but axes should.
* Picks should break walls, rock, statues, and boulders; axes shouldn't.
* Either picks or axes should chop down doors.
2002-04-16 01:37:57 +00:00
nethack.allison
817bdf58e7 B/U/C Priest suggestion by Pat
- also a win32 dsp file modification
2002-04-07 12:51:28 +00:00
nethack.allison
b940ca0ee7 Priests recognize B/U/C status on items in container menus
<email deleted>
> Since Priests' knowledge of the buc-status of an object only
> kicks in when the name is being looked at for the first time,
> they get an "X" option when taking items out of a newly-looted
> container, but B, U, and C thereafter; could their ability be
> pre-applied to the container's contents when constructing the
> menu, to avoid this anomaly?
>
2002-04-06 18:06:59 +00:00
cohrs
5c1ea899bf ensure touch_artifact is always called via hold_another_object
- remove the touch_artifact calls just added
- put a check into hold_another_object itself, based on the complete check
removed from makewish
2002-04-02 05:32:02 +00:00
cohrs
adf468910c re-merge objects removed from containers when pack is full
- affects failed removal of a partial count of objects due to a full pack
2002-03-30 20:56:09 +00:00
cohrs
0f1615c7ad simplify touchstone object choosing
- remove special case code from getobj for touchstone
- remove other hacks from getobj that resulted from earlier hack, solves
  the "rub on the gold stone" problem completely
- pass correct letter list to getobj from use_stone, like other callers
2002-02-26 07:36:30 +00:00
nethack.allison
490ceaee6c change is_greystone() to is_graystone()
-Rename is_greystone() to is_graystone() since I've
had one complaint about my choice of spelling for
the macro already.

-Change the recent "#rub touchstone" code to use
the macro which pre-existed under the other spelling
and was already used in the very same "if" statement
with that spelling in invent.c. :-)
2002-02-24 17:23:02 +00:00
nethack.rankin
753cc7089f fix B3024: remove vs take off
Change the prompts for P and R commands to use "put on" instead
of "wear" and "remove" instead of "take off", respectively; W and T
commands aren't affected.  There is no change in game play.
2002-02-24 05:05:11 +00:00
nethack.rankin
4bc3561a96 from <Someone>: #rub touchstone
<Someone>'s message said this was committed, but the cvs repository
didn't reflect his changes.

> Subject: patch: #rub touchstone
> Date: Wed, 20 Feb 2002 23:33:27 -0800
> <email deleted>
>
> Implement <Someone>'s suggestion.
>
> - allow the #rub command to apply to gray stones
> - update various doc & help files to reflect the change
>
> Committed to CVS.
2002-02-24 03:19:20 +00:00
nethack.allison
a65c59a104 BUC follow-up bit 2002-02-19 14:29:15 +00:00
nethack.allison
4170c75993 More BUC
Defer to the validation code from pickup.c for checking
valid categories.  This reduces the number of callback
functions required, and allows combinations of BUCX
to be used in traditional menu style.
2002-02-19 14:20:21 +00:00
nethack.allison
126294b4de follow-up to Allow BUC with menustyles other than full. 2002-02-19 08:29:31 +00:00
nethack.allison
e054b25590 Allow BUC with menustyles other than full. 2002-02-19 08:22:15 +00:00
cohrs
3b2aa68d24 touchstone: cannot rub on the stone gold
hack around the silly grammar
2002-02-19 07:50:42 +00:00
cohrs
443035da2f player eating metal followup
new #ifdef was backwards
2002-02-12 03:58:13 +00:00
cohrs
924f3cbd37 player eating metal
1) player-as-rust monster should obey same rules for edible metal as monsters.
2) with GOLDOBJ, player-as-xorn couldn't eat gold in inventory
2002-02-12 03:53:05 +00:00