summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-07 21:13:35 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-07 21:13:35 +0000
commit2b695d8b7cd4960962bcb0eed3905a90ae678f37 (patch)
tree89552086efc88382c4ec6cc22de594e3b47122c3 /crawl-ref
parent2bc4605e6d2be94a4a79b02571ed041c62c20092 (diff)
downloadcrawl-ref-2b695d8b7cd4960962bcb0eed3905a90ae678f37.tar.gz
crawl-ref-2b695d8b7cd4960962bcb0eed3905a90ae678f37.zip
Clean up handling of neutral god gifts.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4111 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/beam.cc24
-rw-r--r--crawl-ref/source/fight.cc4
-rw-r--r--crawl-ref/source/mon-util.cc5
-rw-r--r--crawl-ref/source/mon-util.h1
-rw-r--r--crawl-ref/source/player.cc5
-rw-r--r--crawl-ref/source/spells2.cc17
-rw-r--r--crawl-ref/source/spells3.cc10
7 files changed, 26 insertions, 40 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index aa2881b73c..9db4952d77 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -3817,17 +3817,14 @@ static int _affect_monster(bolt &beam, monsters *mon)
if (beam.flavour != BEAM_CHARM)
{
- if (mons_friendly( mon ))
- did_god_conduct( DID_ATTACK_FRIEND, 5, true, mon );
- else if (mons_neutral( mon )
- && testbits( mon->flags, MF_GOD_GIFT ))
- {
- did_god_conduct( DID_ATTACK_NEUTRAL, 5, true, mon );
- }
+ if (mons_friendly(mon))
+ did_god_conduct(DID_ATTACK_FRIEND, 5, true, mon);
+ else if (mons_good_neutral(mon))
+ did_god_conduct(DID_ATTACK_NEUTRAL, 5, true, mon);
}
- if (mons_is_holy( mon ))
- did_god_conduct( DID_ATTACK_HOLY, mon->hit_dice, true, mon );
+ if (mons_is_holy(mon))
+ did_god_conduct(DID_ATTACK_HOLY, mon->hit_dice, true, mon);
if (you.religion == GOD_BEOGH && mons_species(mon->type) == MONS_ORC
&& mon->behaviour == BEH_SLEEP && !player_under_penance()
@@ -3995,12 +3992,9 @@ static int _affect_monster(bolt &beam, monsters *mon)
}
if (mons_friendly(mon))
- conduct.set( DID_ATTACK_FRIEND, 5, !okay, mon );
- else if (mons_neutral(mon)
- && testbits(mon->flags, MF_GOD_GIFT))
- {
- conduct.set( DID_ATTACK_NEUTRAL, 5, !okay, mon );
- }
+ conduct.set(DID_ATTACK_FRIEND, 5, !okay, mon);
+ else if (mons_good_neutral(mon))
+ conduct.set(DID_ATTACK_NEUTRAL, 5, !okay, mon);
if (mons_is_holy(mon))
conduct.set( DID_ATTACK_HOLY, mon->hit_dice, !okay, mon );
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index 10c3594821..20af770217 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -3910,9 +3910,7 @@ bool monster_attack(int monster_attacking)
// Friendly monsters and neutral monsters that are god gifts won't
// attack unless confused.
- if ((mons_friendly(attacker)
- || (mons_neutral(attacker)
- && testbits(attacker->flags, MF_GOD_GIFT)))
+ if ((mons_friendly(attacker) || mons_good_neutral(attacker))
&& !mons_is_confused(attacker))
{
return false;
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 402aeac188..b120b73ec1 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -1811,6 +1811,11 @@ bool mons_neutral(const monsters *m)
return (m->attitude == ATT_NEUTRAL || m->has_ench(ENCH_NEUTRAL));
}
+bool mons_good_neutral(const monsters *m)
+{
+ return (mons_neutral(m) && testbits(m->flags, MF_GOD_GIFT));
+}
+
mon_attitude_type mons_attitude(const monsters *m)
{
return (m->has_ench(ENCH_CHARM)? ATT_FRIENDLY : m->attitude);
diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h
index ae69af7e15..1a250e689e 100644
--- a/crawl-ref/source/mon-util.h
+++ b/crawl-ref/source/mon-util.h
@@ -621,6 +621,7 @@ bool mons_aligned(int m1, int m2);
* *********************************************************************** */
bool mons_friendly(const monsters *m);
bool mons_neutral(const monsters *m);
+bool mons_good_neutral(const monsters *m);
mon_attitude_type mons_attitude(const monsters *m);
bool mons_behaviour_perceptible(const monsters *mon);
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index 4a9a2e8e10..113d0d1063 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -5886,11 +5886,8 @@ void player::attacking(actor *other)
const monsters *mons = dynamic_cast<monsters*>(other);
if (mons_friendly(mons))
did_god_conduct(DID_ATTACK_FRIEND, 5, true, mons);
- else if (mons_neutral(mons)
- && testbits(mons->flags, MF_GOD_GIFT))
- {
+ else if (mons_good_neutral(mons))
did_god_conduct(DID_ATTACK_NEUTRAL, 5, true, mons);
- }
else
pet_target = monster_index(mons);
}
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index c6831801b3..5c0d66c752 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -1177,20 +1177,17 @@ char burn_freeze(int pow, beam_type flavour)
if (hurted)
{
- if (mons_friendly( monster ))
- did_god_conduct( DID_ATTACK_FRIEND, 5, true, monster );
- else if (mons_neutral( monster )
- && testbits( monster->flags, MF_GOD_GIFT ))
- {
- did_god_conduct( DID_ATTACK_NEUTRAL, 5, true, monster );
- }
+ if (mons_friendly(monster))
+ did_god_conduct(DID_ATTACK_FRIEND, 5, true, monster);
+ else if (mons_good_neutral(monster))
+ did_god_conduct(DID_ATTACK_NEUTRAL, 5, true, monster);
- if (mons_holiness( monster ) == MH_HOLY)
- did_god_conduct( DID_ATTACK_HOLY, monster->hit_dice );
+ if (mons_holiness(monster) == MH_HOLY)
+ did_god_conduct(DID_ATTACK_HOLY, monster->hit_dice);
}
if (!mons_friendly(monster) || hurted)
- behaviour_event( monster, ME_ANNOY, MHITYOU );
+ behaviour_event(monster, ME_ANNOY, MHITYOU);
if (hurted)
{
diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc
index 6b4c22ae18..9dfad576e2 100644
--- a/crawl-ref/source/spells3.cc
+++ b/crawl-ref/source/spells3.cc
@@ -216,11 +216,8 @@ int cast_smiting(int power, dist &beam)
if (mons_friendly(monster))
did_god_conduct(DID_ATTACK_FRIEND, 5, true, monster);
- else if (mons_neutral(monster)
- && testbits(monster->flags, MF_GOD_GIFT))
- {
+ else if (mons_good_neutral(monster))
did_god_conduct(DID_ATTACK_NEUTRAL, 5, true, monster);
- }
if (mons_is_holy(monster))
did_god_conduct(DID_ATTACK_HOLY, monster->hit_dice, true, monster);
@@ -278,11 +275,8 @@ int airstrike(int power, dist &beam)
if (mons_friendly(monster))
did_god_conduct(DID_ATTACK_FRIEND, 5, true, monster);
- else if (mons_neutral(monster)
- && testbits(monster->flags, MF_GOD_GIFT))
- {
+ else if (mons_good_neutral(monster))
did_god_conduct(DID_ATTACK_NEUTRAL, 5, true, monster);
- }
if (mons_is_holy(monster))
did_god_conduct(DID_ATTACK_HOLY, monster->hit_dice, true, monster);