diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-05-11 16:07:26 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-05-11 16:07:26 +0000 |
commit | 295bf5c4e59e0711d14f607e28a666af31c6294c (patch) | |
tree | 0807ac30bc3cf6b7b759bc99ed2964bcf424373a /crawl-ref/source/monplace.cc | |
parent | 644ceed285e688f0906b04e88ecdf8b2b8e92364 (diff) | |
download | crawl-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.cc | 11 |
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)) |