summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-05-11 16:14:30 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-05-11 16:14:30 +0000
commit24e44f849415fe62589fce59d03d879f4a98aba3 (patch)
tree13abab2987303cf1e7f585e1263f015e96c7f838
parent7497ddf538959d8a70c4f18d5c3dc553548cbcff (diff)
downloadcrawl-ref-24e44f849415fe62589fce59d03d879f4a98aba3.tar.gz
crawl-ref-24e44f849415fe62589fce59d03d879f4a98aba3.zip
Merge trunk (1460:1463] to 0.2 branch (flying monsters, pools, and paralysis).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup-0.2@1464 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/mon-data.h2
-rw-r--r--crawl-ref/source/monplace.cc15
-rw-r--r--crawl-ref/source/monplace.h2
3 files changed, 14 insertions, 5 deletions
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index 8b5c963210..ddd293f451 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 f24325525b..c921d098ee 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -65,7 +65,15 @@ bool grid_compatible(int grid_wanted, int actual_grid, bool generation)
// that uses only the monster class to make decisions.
bool monster_habitable_grid(const monsters *m, int actual_grid)
{
- return (monster_habitable_grid(m->type, actual_grid, mons_flies(m)));
+ return (monster_habitable_grid(m->type, actual_grid, mons_flies(m),
+ 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
@@ -75,14 +83,15 @@ 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);
return (grid_compatible(preferred_habitat, actual_grid)
// [dshaligram] Flying creatures are all DNGN_FLOOR, so we
// only have to check for the additional valid grids of deep
// water and lava.
- || ((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 5f00448a2b..7d351970b3 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);
+ int flies = -1, bool paralysed = false);
bool monster_habitable_grid(const monsters *m, int actual_grid);
bool monster_floundering(const monsters *m);
bool monster_can_submerge(int monster_class, int grid);