fix #H7103 - shop pricing
Player came across a stack of 2 gray stones in a shop and kicked one. That one ended up with a different (in his case, lower) price once it was separate. This behavior only applies to non-glass gems which add a price variation derived from internal ID (obj->o_id) number. Make splitting stacks always yield the same price per item in the new stack as was being charged in the old stack by choosing a similar o_id. Do it for all splits (that can vary price by ID, so just non-glass gems), not just ones performed inside shops. He picked up the lower priced one and dropped it back on the original higher priced one; the combined stack took on the lower price. That will no longer happen if they come from splitting a stack, but this fix doesn't address merging with different prices when they start out as separate stacks. (Unpaid items won't merge in inventory if prices are different, but shop-owned items will merge on floor.)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1545597403 2018/12/23 20:36:43 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.676 $ */
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1545948751 2018/12/27 22:12:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.677 $ */
|
||||
/* Copyright (c) Steve Creps, 1988. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -2248,6 +2248,7 @@ E void FDECL(check_unpaid_usage, (struct obj *, BOOLEAN_P));
|
||||
E void FDECL(check_unpaid, (struct obj *));
|
||||
E void FDECL(costly_gold, (XCHAR_P, XCHAR_P, long));
|
||||
E long FDECL(get_cost_of_shop_item, (struct obj *));
|
||||
E int FDECL(oid_price_adjustment, (struct obj *, unsigned));
|
||||
E boolean FDECL(block_door, (XCHAR_P, XCHAR_P));
|
||||
E boolean FDECL(block_entry, (XCHAR_P, XCHAR_P));
|
||||
E char *FDECL(shk_your, (char *, struct obj *));
|
||||
|
||||
Reference in New Issue
Block a user