diff options
author | Pete Hurst <pete@streamuniverse.tv> | 2013-03-01 11:37:21 +0000 |
---|---|---|
committer | Chris Campbell <chriscampbell89@gmail.com> | 2013-03-10 21:25:58 +0000 |
commit | efe861e7762bd6caab28ed79b94b298466823afb (patch) | |
tree | 8fb5c4289cbfb85a0efdd4b7255903745bf14289 /crawl-ref/source/mon-project.cc | |
parent | da6524e2c3696264381eb27dacde4a83dddc95a8 (diff) | |
download | crawl-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.cc | 16 |
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; |