summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monplace.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-05-11 16:07:26 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-05-11 16:07:26 +0000
commit295bf5c4e59e0711d14f607e28a666af31c6294c (patch)
tree0807ac30bc3cf6b7b759bc99ed2964bcf424373a /crawl-ref/source/monplace.cc
parent644ceed285e688f0906b04e88ecdf8b2b8e92364 (diff)
downloadcrawl-ref-295bf5c4e59e0711d14f607e28a666af31c6294c.tar.gz
crawl-ref-295bf5c4e59e0711d14f607e28a666af31c6294c.zip
Refix monster paralysis interaction with levitating monsters.
Unseen horrors no longer levitate. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1463 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monplace.cc')
-rw-r--r--crawl-ref/source/monplace.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc
index 2b95ed4bb3..acc68c4ebb 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -69,6 +69,13 @@ bool monster_habitable_grid(const monsters *m, int actual_grid)
m->paralysed()));
}
+inline static bool mons_airborne(int mcls, int flies, bool paralysed)
+{
+ if (flies == -1)
+ flies = mons_class_flies(mcls);
+ return (paralysed? flies == 2 : flies != 0);
+}
+
// Can monsters of class monster_class live happily on actual_grid? Use flies
// == true to pretend the monster can fly.
//
@@ -76,7 +83,7 @@ bool monster_habitable_grid(const monsters *m, int actual_grid)
// one check, so we no longer care if a water elemental springs into existence
// on dry land, because they're supposed to be able to move onto dry land
// anyway.
-bool monster_habitable_grid(int monster_class, int actual_grid, bool flies,
+bool monster_habitable_grid(int monster_class, int actual_grid, int flies,
bool paralysed)
{
const int preferred_habitat = monster_habitat(monster_class);
@@ -84,7 +91,7 @@ bool monster_habitable_grid(int monster_class, int actual_grid, bool flies,
// [dshaligram] Flying creatures are all DNGN_FLOOR, so we
// only have to check for the additional valid grids of deep
// water and lava.
- || (!paralysed && (flies || mons_class_flies(monster_class))
+ || (mons_airborne(monster_class, flies, paralysed)
&& (actual_grid == DNGN_LAVA
|| actual_grid == DNGN_DEEP_WATER))