From ea22cd80a5344cd61b27cb1246ff741a5c6829c4 Mon Sep 17 00:00:00 2001 From: Adam Borowski Date: Sun, 20 Dec 2009 23:02:35 +0100 Subject: Make the "killing friend" conduct, slouch and swapping place treat projectiles as non-monsters. --- crawl-ref/source/godabil.cc | 2 +- crawl-ref/source/mon-abil.cc | 1 + crawl-ref/source/mon-project.cc | 5 ----- crawl-ref/source/mon-project.h | 2 -- crawl-ref/source/mon-stuff.cc | 7 +++++++ crawl-ref/source/mon-util.cc | 5 +++++ crawl-ref/source/mon-util.h | 2 +- crawl-ref/source/religion.cc | 2 ++ 8 files changed, 17 insertions(+), 9 deletions(-) diff --git a/crawl-ref/source/godabil.cc b/crawl-ref/source/godabil.cc index edb1b723fb..4b9150f860 100644 --- a/crawl-ref/source/godabil.cc +++ b/crawl-ref/source/godabil.cc @@ -1256,7 +1256,7 @@ bool ponderousify_armour() static int _slouch_monsters(coord_def where, int pow, int, actor* agent) { monsters* mon = monster_at(where); - if (mon == NULL || mons_is_stationary(mon)) + if (mon == NULL || mons_is_stationary(mon) || mons_is_projectile(mon->type)) return (0); int dmg = (mon->speed - 1000/player_movement_speed()/player_speed()); diff --git a/crawl-ref/source/mon-abil.cc b/crawl-ref/source/mon-abil.cc index 32a764bcb1..7cdf85eaf2 100644 --- a/crawl-ref/source/mon-abil.cc +++ b/crawl-ref/source/mon-abil.cc @@ -494,6 +494,7 @@ static bool _siren_movement_effect(const monsters *monster) coord_def swapdest; if (mon->wont_attack() && !mons_is_stationary(mon) + && !mons_is_projectile(mon->type) && !mon->cannot_act() && !mon->asleep() && swap_check(mon, swapdest, true)) diff --git a/crawl-ref/source/mon-project.cc b/crawl-ref/source/mon-project.cc index 7808adb2ab..c6e4c18788 100644 --- a/crawl-ref/source/mon-project.cc +++ b/crawl-ref/source/mon-project.cc @@ -27,11 +27,6 @@ #include "terrain.h" #include "viewchar.h" -bool mons_is_projectile(monster_type mt) -{ - return (mt == MONS_ORB_OF_DESTRUCTION); -} - bool cast_iood(actor *caster, int pow, bolt *beam) { int mtarg = mgrd(beam->target); diff --git a/crawl-ref/source/mon-project.h b/crawl-ref/source/mon-project.h index a57afbbd80..f10b543097 100644 --- a/crawl-ref/source/mon-project.h +++ b/crawl-ref/source/mon-project.h @@ -9,8 +9,6 @@ #include "beam.h" -bool mons_is_projectile(monster_type mt); - bool cast_iood(actor *caster, int pow, bolt *beam); bool iood_act(monsters &mon, bool no_trail = false); diff --git a/crawl-ref/source/mon-stuff.cc b/crawl-ref/source/mon-stuff.cc index 76f964fe20..974188694a 100644 --- a/crawl-ref/source/mon-stuff.cc +++ b/crawl-ref/source/mon-stuff.cc @@ -2815,6 +2815,13 @@ bool swap_check(monsters *monster, coord_def &loc, bool quiet) return (false); } + if (mons_is_projectile(monster->type)) + { + if (!quiet) + mpr("It's unwise to walk into this."); + return (false); + } + if (monster->caught()) { if (!quiet) diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 17ed88bd8e..3844147b82 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -484,6 +484,11 @@ bool mons_is_fast(const monsters *mon) return (mon->speed > pspeed); } +bool mons_is_projectile(int mc) +{ + return (mc == MONS_ORB_OF_DESTRUCTION); +} + bool mons_is_insubstantial(int mc) { return (mons_class_flag(mc, M_INSUBSTANTIAL)); diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h index b9c5424aee..ce186ddf40 100644 --- a/crawl-ref/source/mon-util.h +++ b/crawl-ref/source/mon-util.h @@ -657,7 +657,7 @@ bool mons_class_is_stationary(int mc); bool mons_is_stationary(const monsters *mon); bool mons_is_fast( const monsters *mon ); - +bool mons_is_projectile(int mc); bool mons_is_insubstantial(int mc); bool mons_has_blood(int mc); diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index 3ec55a07cc..68f1541f59 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -4484,6 +4484,8 @@ bool god_hates_attacking_friend(god_type god, const actor *fr) bool god_hates_attacking_friend(god_type god, int species) { + if (mons_is_projectile(species)) + return (false); switch (god) { case GOD_ZIN: -- cgit v1.2.3-54-g00ecf