X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fautopick.c;h=b2fbaf06b703d9cc4d7f1d8c8e72243c4a99d1cd;hb=f6dd98bb91b67785f4568cb576e0f673a9b0edbb;hp=e9bf264db139b9496c2cd4fb5e1c78058d7bc285;hpb=81a5a63c0658e8d7616cd6e5108272f93ba26949;p=hengband%2Fhengband.git diff --git a/src/autopick.c b/src/autopick.c index e9bf264db..b2fbaf06b 100644 --- a/src/autopick.c +++ b/src/autopick.c @@ -898,9 +898,8 @@ void auto_inscribe_item(int item, int idx) /* * Automatically destroy an item if it is to be destroyed - * */ -bool auto_destroy_item(int item, int autopick_idx) +bool auto_destroy_item(int item, int autopick_idx, bool wait_optimize) { bool destroy = FALSE; char o_name[MAX_NLEN]; @@ -963,7 +962,13 @@ bool auto_destroy_item(int item, int autopick_idx) if (item >= 0) { inven_item_increase(item, -(o_ptr->number)); - inven_item_optimize(item); + + /* + * Optimize only equipment now. + * Optimize inventry later. + */ + if (wait_optimize && item > INVEN_PACK) + inven_item_optimize(item); } /* Eliminate the item (from the floor) */ @@ -984,6 +989,18 @@ bool auto_destroy_item(int item, int autopick_idx) /* + * Optimize all inventry items after consumption of staves or scrolls. + */ +void optimize_inventry_auto_destroy(void) +{ + int i; + + for (i = 0; i <= INVEN_PACK; i++) + inven_item_optimize(i); +} + + +/* * Automatically pickup/destroy items in this grid. */ void auto_pickup_items(cave_type *c_ptr) @@ -1038,7 +1055,7 @@ void auto_pickup_items(cave_type *c_ptr) */ else { - if (auto_destroy_item((-this_o_idx), idx)) + if (auto_destroy_item((-this_o_idx), idx, FALSE)) continue; } }