summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-project.cc
diff options
context:
space:
mode:
authorPete Hurst <pete@streamuniverse.tv>2013-03-01 11:37:21 +0000
committerChris Campbell <chriscampbell89@gmail.com>2013-03-10 21:25:58 +0000
commitefe861e7762bd6caab28ed79b94b298466823afb (patch)
tree8fb5c4289cbfb85a0efdd4b7255903745bf14289 /crawl-ref/source/mon-project.cc
parentda6524e2c3696264381eb27dacde4a83dddc95a8 (diff)
downloadcrawl-ref-efe861e7762bd6caab28ed79b94b298466823afb.tar.gz
crawl-ref-efe861e7762bd6caab28ed79b94b298466823afb.zip
Fix strange interaction of boulder beetles and fluids
Diffstat (limited to 'crawl-ref/source/mon-project.cc')
-rw-r--r--crawl-ref/source/mon-project.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/crawl-ref/source/mon-project.cc b/crawl-ref/source/mon-project.cc
index f78aa1102a..e79fd33851 100644
--- a/crawl-ref/source/mon-project.cc
+++ b/crawl-ref/source/mon-project.cc
@@ -516,6 +516,15 @@ move_again:
}
}
+ // Boulders stop at lava/water to prevent unusual behaviour; skimming across
+ // the water like a pebble could be justifiable but it raises too many questions.
+ if (!iood && (!feat_has_solid_floor(grd(pos)) || feat_is_water(grd(pos))))
+ {
+ mprf("%s screeches to a halt.", mon.name(DESC_THE, true).c_str());
+ _iood_stop(mon,false);
+ return true;
+ }
+
if (!mon.move_to_pos(pos))
{
_iood_stop(mon);
@@ -571,6 +580,12 @@ static bool _iood_catchup_move(monster& mon)
_iood_stop(mon, true);
return true;
}
+ // Boulder doesn't travel over water/lava.
+ if (mons_is_boulder(&mon) && (!feat_has_solid_floor(grd(pos)) || feat_is_water(grd(pos))))
+ {
+ _iood_stop(mon, false);
+ return true;
+ }
if (!mon.move_to_pos(pos))
{
@@ -605,7 +620,6 @@ void iood_catchup(monster* mons, int pturns)
return;
}
-
for (int i = 0; i < moves; ++i)
if (_iood_catchup_move(mon))
return;