summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/items.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/items.cc')
-rw-r--r--crawl-ref/source/items.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/crawl-ref/source/items.cc b/crawl-ref/source/items.cc
index a05a5d8e9e..200656794c 100644
--- a/crawl-ref/source/items.cc
+++ b/crawl-ref/source/items.cc
@@ -26,6 +26,7 @@ REVISION("$Rev$");
#include "externs.h"
+#include "arena.h"
#include "beam.h"
#include "branch.h"
#include "cloud.h"
@@ -60,6 +61,7 @@ REVISION("$Rev$");
#include "skills2.h"
#include "spl-book.h"
#include "spl-util.h"
+#include "state.h"
#include "stuff.h"
#include "stash.h"
#include "tiles.h"
@@ -323,6 +325,9 @@ int get_item_slot( int reserve )
{
ASSERT( reserve >= 0 );
+ if (crawl_state.arena)
+ reserve = 0;
+
int item = NON_ITEM;
for (item = 0; item < (MAX_ITEMS - reserve); item++)
@@ -331,7 +336,16 @@ int get_item_slot( int reserve )
if (item >= MAX_ITEMS - reserve)
{
- item = (reserve <= 10) ? _cull_items() : NON_ITEM;
+ if (crawl_state.arena)
+ {
+ item = arena_cull_items();
+ // If arena_cull_items() can't free up any space then
+ // _cull_items() won't be able to either, so give up.
+ if (item == NON_ITEM)
+ return (NON_ITEM);
+ }
+ else
+ item = (reserve <= 10) ? _cull_items() : NON_ITEM;
if (item == NON_ITEM)
return (NON_ITEM);