summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2009-12-20 23:02:35 +0100
committerAdam Borowski <kilobyte@angband.pl>2009-12-20 23:02:35 +0100
commitea22cd80a5344cd61b27cb1246ff741a5c6829c4 (patch)
tree1078ab646b0f5c0e1e5435dcc2fe8397bd721738
parent32b5cab8cacc2b0b076610486042261d7a9d1fc2 (diff)
downloadcrawl-ref-ea22cd80a5344cd61b27cb1246ff741a5c6829c4.tar.gz
crawl-ref-ea22cd80a5344cd61b27cb1246ff741a5c6829c4.zip
Make the "killing friend" conduct, slouch and swapping place treat projectiles as non-monsters.
-rw-r--r--crawl-ref/source/godabil.cc2
-rw-r--r--crawl-ref/source/mon-abil.cc1
-rw-r--r--crawl-ref/source/mon-project.cc5
-rw-r--r--crawl-ref/source/mon-project.h2
-rw-r--r--crawl-ref/source/mon-stuff.cc7
-rw-r--r--crawl-ref/source/mon-util.cc5
-rw-r--r--crawl-ref/source/mon-util.h2
-rw-r--r--crawl-ref/source/religion.cc2
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: