diff options
author | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-22 13:42:49 +0000 |
---|---|---|
committer | haranp <haranp@c06c8d41-db1a-0410-9941-cceddc491573> | 2006-12-22 13:42:49 +0000 |
commit | b794d555277836316ec842421c5287ff50641ff9 (patch) | |
tree | 71af9d043989c3a41d1619da84077eb35bc74b5d /crawl-ref/source/items.cc | |
parent | dfebce7241da1ef5b2506cb175b9abf5eb32e533 (diff) | |
download | crawl-ref-b794d555277836316ec842421c5287ff50641ff9.tar.gz crawl-ref-b794d555277836316ec842421c5287ff50641ff9.zip |
Added option 'autopickup_no_burden' which, if set, will prevent autopickup
from picking up items beyond the burden limit. (Partial pickup will take
place if you can take some of the items for a stack, e.g., 3 of the 5
potions of healing.) Defaults to false.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@692 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/items.cc')
-rw-r--r-- | crawl-ref/source/items.cc | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/crawl-ref/source/items.cc b/crawl-ref/source/items.cc index 24df6761d9..1832f36a90 100644 --- a/crawl-ref/source/items.cc +++ b/crawl-ref/source/items.cc @@ -2962,12 +2962,30 @@ static void autopickup(void) if (item_needs_autopickup(mitm[o])) { + + int num_to_take = mitm[o].quantity; + if ( Options.autopickup_no_burden ) + { + int num_can_take = + (carrying_capacity(you.burden_state) - you.burden) / + item_mass(mitm[o]); + + if ( num_can_take == 0 ) + { + o = next; + continue; + } + + if ( num_can_take < num_to_take ) + num_to_take = num_can_take; + } + if (!(mitm[o].flags & ISFLAG_THROWN)) unthrown++; mitm[o].flags &= ~(ISFLAG_THROWN | ISFLAG_DROPPED); - result = move_item_to_player( o, mitm[o].quantity); + result = move_item_to_player(o, num_to_take); if (result == 0) { |