Commit Graph

173 Commits

Author SHA1 Message Date
Pasi Kallinen
3502cfcc5a Hallucinatory liquids for water, lava, and acid 2016-06-07 20:57:50 +03:00
Pasi Kallinen
984785b13c Give a hint that containers are looted instead of opened 2016-06-02 18:11:41 +03:00
PatR
26226a1cdb misc core formatting
Some of these are post-3.6.0, some just got overlooked before the
3.6.0 release.
2016-05-14 18:26:48 -07:00
Pasi Kallinen
02760cc45d Unify autopickup object test
This also fixes a malloc segfault due to the tests not matching,
introduced by me post-3.6.0
2016-05-11 22:13:44 +03:00
PatR
8bea47e8b2 container simplification bit
Make use of the unsplitobj routine added last Fall,
2016-04-29 01:43:03 -07:00
Sean Hunt
bca851d711 Merge remote-tracking branch 'github/tung/shop-floor-nested-loot' into NetHack-3.6.0 2016-04-12 21:32:10 -04:00
PatR
e8e8c14b34 more fixes for revised 'sortloot'
After some permutation of commands which displayed items, the 'd'
command presented a prompt with the list of letters scrambled (in
loot order or pack order rather than invlet order), so explicitly
sort when getobj operates.  Done for ggetobj too.

For menustyle:Traditional, ',' followed by 'm' presented a pickup
list in pile order even when sortloot was 'l' or 'f'.  That was an
unintentional change during the 'revamp'.
2016-03-22 01:19:27 -07:00
PatR
3353ad1114 fix "object lost" panic after query_objlist
Reported directly to devteam for recent git code, the "sortloot
revamp" patch could trigger an object lost panic after calling
query_objlist() when menustyle was full or partial and player
picked up a subset of available items.  Modified head-of-list was
not being propagated to its source in pickup().  Use an extra layer
of indirection.
2016-03-20 13:01:56 -07:00
PatR
529dad8ef1 looting gold
When removing items from a container via menu, list gold as '$'
instead of 'a' when it is the first item.  Requested during beta
testing last year....

When gold isn't first ('sortpack' false, or custom 'inv_order[]'),
it uses the next letter in sequence instead of '$', otherwise it
would be the only item out of sequence.
2016-03-13 17:45:18 -07:00
PatR
b3b4953020 'sortloot' revamp
Change the sortloot option to use qsort() instead of naive insertion
sort.  After sorting, it reorders the linked list into the sorted
order, so might have some subtle change(s) in behavior since that
wasn't done before.

pickup.c includes some formatting cleanup.

modified:
  include/extern.h, hack.h, obj.h
  src/do.c, do_wear.c, end.c, invent.c, pickup.c
2016-03-13 16:23:38 -07:00
Tung Nguyen
82386643a0 Fix billing/credit when hero nests their containers on a shop floor
This fixes a bug where the hero could accidentally donate the contents
of their bag to a shopkeeper if they put it in another bag on the shop
floor that also belonged to the hero.  To reproduce:

 1. Drop a sack on the floor, but don't sell it.
 2. Get another sack and put in hero-owned objects.
 3. Put the sack with objects into the sack on the shop floor.
 4. Take out the sack with the objects from the sack on the shop floor.

The shopkeeper will claim you owe them for the objects in the sack, and
view the contents of the sack will show them as belonging to the
shopkeeper.

This fix is what those previous fixes for `SELL_DONTSELL` were for.

Based on DynaHack commit f91ce0b (Fix billing/credit when hero nests
their containers on a shop floor) by me.
2016-03-11 18:35:26 +11:00
PatR
f28a498d03 use_containers() comments
Catch the comments up with the 'loot many containers' fix.
2016-03-07 17:35:52 -08:00
PatR
6106a7240f fix bz238 - looting many containers
"Looting many containers via menu cannot be stopped".  When the
player uses #loot command at a location with multiple containers,
a menu of which ones to loot is presented and player can pick any
or all of them.  But if you terminate the looting of a particular
container with ESC, it goes on to the next selected one rather than
stopping the loot action because that's what the 'q' choice does.

The simplest fix would be to allow choosing only one container
from the "loot which?" menu, but this retains the ability to loot
multiple containers on a pile in one turn.  It makes looting
stoppable by extending the ":iobrsq or ?" prompt, adding 'n' for
"next container" and changing 'q' from "done with this container"
to "done looting" (with ESC still a synonym for 'q').  When just
one container is being looted, or when on the last of N containers,
'n' is not shown but is still accepted (and treated as 'q').

Also, use_container() was using a menu for ":iobrsq" if player had
menustyle set to Full when it was intended to be for Partial (name
confusion...).  This switches Partial to use menu for loot action,
and leaves Full with that since that's how 3.6.0 has been behaving.
Traditional and Combination use the prompt string and single char
response.
2016-03-07 16:38:05 -08:00
PatR
a21894cc39 tipped ice box corpses
Reported directly to devteam, with patch:  tipping corpses out of an
ice box wasn't restarting their rot timers, producing corpses that
would last indefinitely.
2016-01-23 15:23:45 -08:00
Pasi Kallinen
91a7d393cd Do not autopickup unpaid items in shops
This is overridden by pickup_thrown and autopickup
exceptions.
2015-12-22 22:36:30 +02:00
PatR
40ad82ed77 fix #H4105 - credit cloning
Putting gold into a hero-owned container on a shop's floot gave credit
for the amount of the gold but also set the gold object no_charge, so
it could be taken out without taking away the credit.  Then put back
in and taken out as many times as the player liked, doubling the gold
each time until the shopkeeper was out of cash.

I think the proper fix would be to avoid giving credit instead of not
marking the gold no_charge, but that would require multiple additional
changes so I took the easy way out.

Most of the changes to pickup.c are reformatting that it escaped prior
to release.  The changes to shk.c are cosmetic and not part of the fix.
2015-12-20 01:44:19 -08:00
Pasi Kallinen
3a1e9ccd80 Fix infinite throne looting when confused
This could be used to generate monsters ad infinitum.
2015-11-24 11:16:07 +02:00
Pasi Kallinen
6ed4f24d24 Tiny formatting fix 2015-11-24 09:59:20 +02:00
Pasi Kallinen
08b041f15f Pacify some clang compile warnings, pt 2 2015-11-21 23:50:11 +02:00
Pasi Kallinen
ca02f00208 Prevent buffer overflow 2015-11-12 22:01:47 +02:00
PatR
ea8a1beb0a formatting: src/m*.c - p*.c continuation lines
Somewhere along the line I started removing redundant parentheses from
return statements, but only in files that needed continuation fixups
so it's not comprehensive.
2015-10-22 16:35:01 -07:00
Pasi Kallinen
af1c77808b Comment typofixes, pt 4 2015-10-17 18:47:31 +03:00
PatR
9034e2a7e5 W_WEAPON, W_ACCESSORY
Add macros W_WEAPON and W_ACCESSORY, similar to existing W_ARMOR, bitmask
of all the relevant worn bits.  Just for code readability; there should
be no change in behavior.

Also, reformat the "ugly checks" portion of getobj().  Slightly better
readability and fewer continuation lines, but only a modest improvement.
2015-07-25 19:19:58 -07:00
PatR
da1ae4a7da Make #tip at a location which has multiple containers honor menustyle
rather than always use a menu.  Only affects menustyle:traditional and
can be overridden at the time by using the 'm' prefix before the #tip
command.

When using the menu, add an explicit pick-from-inventory choice.  The
behavior there stays the same:  ask about inventory if no floor container
is chosen.
2015-06-16 19:23:43 -07:00
Pasi Kallinen
36f00f98eb Use a menu to pick a container to tip
If there is more than one container, the #tip command will show a menu;
if there's just one container, prompt for tipping.

As per Boudewijn's suggestion, remove the superfluous
"There is a container here" message.
2015-05-31 10:13:53 +03:00
PatR
7e05f03bc4 fix [pre-]beta 'Du' bug with containers in shops
'Du' in a shop was listing hero-owned containers that didn't contain
any unpaid items.  At least one unpaid item must be carried; bug
manifested iff one or more unpaid items followed the container in
the invent list.

Recently revised allow_category() was using count_unpaid() for
container contents incorrectly, inadvertently checking the rest of
inventory after the container in addition to its contents.
2015-05-28 02:22:48 -07:00
Pasi Kallinen
2944dc6935 Show cost of merchandise when walking over it
This is another feature the betatesters seemed to miss a lot.
2015-05-27 21:45:00 +03:00
Sean Hunt
1c081b1647 Remove stale version control lines. 2015-05-25 09:21:31 +09:00
Sean Hunt
84d63e169b Use the common regex engine in more places.
In particular, in autopickup_exceptions and user sounds.
2015-05-24 10:17:58 -04:00
Sean Hunt
97d6fade74 Reformat all C files.
I'll push a formatting guide at some point. There may still be
outstanding changes, but please feel free to resolve those as you arrive
a them.

To the best of my knowledge, there is no changes to the actual code
content, but the formatter does have the occasional bug. If you run into
an issue, please fix it!
2015-05-09 13:43:16 -04:00
karnov
2a907f894e Version number increment 2015-05-06 22:04:27 -04:00
PatR
b4741d6206 more BUCX: union vs intersection
Fix filtering used by the 'D' command, and a few other activities that
allow both object class filtering and bless/curse state filtering, so
that when both class(es) and state(s) are specified, objects need to
match both rather than either.  D?C will present the player with cursed
scrolls to drop rather than all scrolls plus all other cursed objects.

This also fixes another instance when gold could end up with its bknown
flag set.
2015-04-27 01:22:39 -07:00
Pasi Kallinen
6d4aa312e6 Unify hero free hand check and msg 2015-04-22 09:02:38 +03:00
Pasi Kallinen
e77ea2ae61 Prevent segfault when looking around inside monster
A recent change by me introduced a segfault when
counting swallowed hero as a monster inventory item.
2015-04-15 17:06:44 +03:00
Pasi Kallinen
cc1b5de2a8 Fix warnings, unused and shadowed variables 2015-04-10 20:55:24 +03:00
Pasi Kallinen
92a7962399 Add sortloot -patch
Adds the "sortloot" compound option, with possible values
of "none", "loot", or "full".  It controls the sorting of
item pickup lists for inventory and looting.
2015-04-09 18:23:54 +03:00
Pasi Kallinen
411ee58593 Add more explicit helpless reasons
Instead of just "while helpless", the death reason will tell
more explicitly why the player was helpless.  For example:
"while frozen by a monster's gaze"
2015-03-29 22:12:19 +03:00
Pasi Kallinen
b17ecb149b Use existing function to count containers 2015-03-28 16:24:25 +02:00
Pasi Kallinen
f41c51aef0 Show object symbols in menu headings
... in menus where those object symbols act as menu accelerators.
Toggleable via "menu_objsyms" boolean option, defaults to off.
2015-03-25 22:13:28 +02:00
Pasi Kallinen
debdf7ca48 Move some hard-coded string arrays into data files.
Random epitaphs, engravings and hallucinatory monsters now
live in text data files.
2015-03-18 22:05:10 +02:00
PatR
ad03a7fb7a some lint cleanup 2015-03-16 19:22:49 -07:00
PatR
14525ed0c6 DEBUG/debugpline() fixup
* Replace variadic debugpline() with fixed argument debugpline0(str),
   debugpline1(fmt,arg), and so on so that C99 support isn't required;
 * showdebug() becomes a function rather than a macro and handles a
   bit more;
 * two debugpline() calls in light.c have been changed to impossible();
 * DEBUGFILES macro (in sys.c) can substitute for SYSCF's DEBUGFILES
   setting in !SYSCF configuration (I hope that's temporary).
2015-03-15 18:02:26 -07:00
Pasi Kallinen
c0a5b49e62 Use a menu to loot multiple containers
When looting a location with multiple containers, show a menu for user
to pick the containers to loot instead of asking a yes/no question for
each container.
2015-03-09 21:08:42 +02:00
keni
6fd30ab1ce Manually fix botched NHDT-Branch expansions. 2015-03-01 20:32:28 -05:00
Derek S. Ray
4dddb97301 remove and transfer INVISIBLE_OBJECTS to branch 2015-02-27 19:34:32 -05:00
Sean Hunt
74e741bbbc Make AUTOPICKUP_EXCEPTIONS unconditional. 2015-02-27 19:33:50 -05:00
Pasi Kallinen
612852f7de Apply paxed's DEBUG patch to remove DEBUG/D_DEBUG.
Move debugging output into couple preprocessor defines, which
    are no-op without DEBUG.  To show debugging output from a
    certain source files, use sysconf:

    DEBUGFILES=dungeon.c questpgr.c

    Also fix couple debug lines which did not compile.

This also includes fixes due to Derek Ray to depugpline to work better
on other platforms.
2015-02-27 19:33:45 -05:00
Sean Hunt
ac108cd365 Make GOLDOBJ unconditional. 2015-02-27 19:33:40 -05:00
Sean Hunt
9e65758947 Make STEED unconditional. 2015-02-27 19:33:01 -05:00
keni
03140969ee Bulk recovery of file CVS headers and addition of NHDT- headers. 2015-02-26 09:19:03 -05:00