summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreaverb <reaverb.Crawl@gmail.com>2014-08-08 03:46:43 -0400
committerreaverb <reaverb.Crawl@gmail.com>2014-08-08 15:00:27 -0400
commit8ce947975fa9f9c0b3d8575ab43ff042c5d6b872 (patch)
tree1feedea147c1a4eeaa9df707cd1aaffcb6651987
parenta9cc7087be67d9be82e49097f49ff3abee4ddc9a (diff)
downloadcrawl-ref-8ce947975fa9f9c0b3d8575ab43ff042c5d6b872.tar.gz
crawl-ref-8ce947975fa9f9c0b3d8575ab43ff042c5d6b872.zip
Move item placement code from items() to the only place it is used
-rw-r--r--crawl-ref/source/dungeon.cc34
-rw-r--r--crawl-ref/source/makeitem.cc22
2 files changed, 34 insertions, 22 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index fb53789bc0..2429324f4e 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -3977,6 +3977,33 @@ static void _builder_monsters()
}
}
+/**
+ * Randomly place a single item
+ *
+ * @param item The item slot of the item being randomly placed
+ */
+static void _randomly_place_item(int item)
+{
+ coord_def itempos;
+ bool found = false;
+ for (int i = 0; i < 500 && !found; ++i)
+ {
+ itempos = random_in_bounds();
+ const monster* mon = monster_at(itempos);
+ found = grd(itempos) == DNGN_FLOOR
+ && !map_masked(itempos, MMT_NO_ITEM)
+ // oklobs or statues are ok
+ && (!mon || !mons_is_firewood(mon));
+ }
+ if (!found)
+ {
+ // Couldn't find a single good spot!
+ destroy_item(item);
+ }
+ else
+ move_item_to_grid(&item, itempos);
+}
+
static void _builder_items()
{
int i = 0;
@@ -3993,7 +4020,12 @@ static void _builder_items()
specif_type = OBJ_GOLD; // Lots of gold in the orcish mines.
for (i = 0; i < items_wanted; i++)
- items(1, specif_type, OBJ_RANDOM, false, items_levels, MMT_NO_ITEM);
+ {
+ int item = items(1, specif_type, OBJ_RANDOM, true, items_levels);
+
+ _randomly_place_item(item);
+ }
+
}
static bool _connect_vault_exit(const coord_def& exit)
diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc
index 3e39a602f4..9a3c06c5ee 100644
--- a/crawl-ref/source/makeitem.cc
+++ b/crawl-ref/source/makeitem.cc
@@ -2853,27 +2853,7 @@ int items(bool allow_uniques,
item.link = NON_ITEM;
}
else
- {
- coord_def itempos;
- bool found = false;
- for (int i = 0; i < 500 && !found; ++i)
- {
- itempos = random_in_bounds();
- const monster* mon = monster_at(itempos);
- found = grd(itempos) == DNGN_FLOOR
- && !map_masked(itempos, mapmask)
- // oklobs or statues are ok
- && (!mon || !mons_is_firewood(mon));
- }
- if (!found)
- {
- // Couldn't find a single good spot!
- destroy_item(p);
- return NON_ITEM;
- }
- move_item_to_grid(&p, itempos);
- }
-
+ die("dont_place is used outside dungeon.cc oops");
// Note that item might be invalidated now, since p could have changed.
ASSERT(mitm[p].is_valid());
return p;