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 | |
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
-rw-r--r-- | crawl-ref/source/mon-data.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/monplace.cc | 11 | ||||
-rw-r--r-- | crawl-ref/source/monplace.h | 2 |
3 files changed, 11 insertions, 4 deletions
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h index 4d00eaebb2..9daa43e878 100644 --- a/crawl-ref/source/mon-data.h +++ b/crawl-ref/source/mon-data.h @@ -687,7 +687,7 @@ { MONS_UNSEEN_HORROR, 'x', MAGENTA, "unseen horror", - M_LEVITATE | M_SEE_INVIS | M_INVIS, + M_SEE_INVIS | M_INVIS, MR_NO_FLAGS, 0, 12, MONS_UNSEEN_HORROR, MONS_UNSEEN_HORROR, MH_NATURAL, -3, { {AT_HIT, AF_PLAIN, 12}, {AT_NONE, AF_PLAIN, 0}, {AT_NONE, AF_PLAIN, 0}, {AT_NONE, AF_PLAIN, 0} }, 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)) diff --git a/crawl-ref/source/monplace.h b/crawl-ref/source/monplace.h index a575be634c..3347a05d89 100644 --- a/crawl-ref/source/monplace.h +++ b/crawl-ref/source/monplace.h @@ -94,7 +94,7 @@ void mark_interesting_monst(struct monsters* monster, bool grid_compatible(int grid_wanted, int actual_grid, bool generation = false); bool monster_habitable_grid(int monster_class, int actual_grid, - bool flies = false, bool paralysed = false); + int flies = -1, bool paralysed = false); bool monster_habitable_grid(const monsters *m, int actual_grid); bool monster_can_submerge(int monster_class, int grid); |