summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spl-transloc.cc
diff options
context:
space:
mode:
authorgammafunk <gammafunk@gmail.com>2014-05-23 23:59:41 -0500
committergammafunk <gammafunk@gmail.com>2014-05-26 23:17:43 -0500
commit2371adb45923b9b02faa5c4fff65df3c535f7de4 (patch)
treeb5c251c2ab13655b90ac81848f00d68d871fd0d1 /crawl-ref/source/spl-transloc.cc
parent113be5ec1658845d372a7702d3ccbbfa890dc012 (diff)
downloadcrawl-ref-2371adb45923b9b02faa5c4fff65df3c535f7de4.tar.gz
crawl-ref-2371adb45923b9b02faa5c4fff65df3c535f7de4.zip
Make corpses and skeletons stationary items (minmay)
Moving corpses and skeletons to other levels or to other locations within a level is tedious but may be optimal for corpse rot and god abilities like Kiku's corpse prayer. This commit prevents the player from picking up or apporting carrion. It generalizes the code used for nets being stationary, and cleans up and documents various bits of related item pickup code.
Diffstat (limited to 'crawl-ref/source/spl-transloc.cc')
-rw-r--r--crawl-ref/source/spl-transloc.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/crawl-ref/source/spl-transloc.cc b/crawl-ref/source/spl-transloc.cc
index 2b6e5c4124..50536a1b91 100644
--- a/crawl-ref/source/spl-transloc.cc
+++ b/crawl-ref/source/spl-transloc.cc
@@ -809,6 +809,13 @@ spret_type cast_apportation(int pow, bolt& beam, bool fail)
item_def& item = mitm[item_idx];
+ // Nets can be apported when they have a victim trapped.
+ if (item_is_stationary(item) && !item_is_stationary_net(item))
+ {
+ mpr("You cannot apport that!");
+ return SPRET_ABORT;
+ }
+
// Can't apport the Orb in zotdef or sprint
if (item_is_orb(item)
&& (crawl_state.game_is_zotdef()
@@ -845,9 +852,7 @@ spret_type cast_apportation(int pow, bolt& beam, bool fail)
}
// If we apport a net, free the monster under it.
- if (item.base_type == OBJ_MISSILES
- && item.sub_type == MI_THROWING_NET
- && item_is_stationary(item))
+ if (item_is_stationary_net(item))
{
free_stationary_net(item_idx);
if (monster* mons = monster_at(where))