diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-04-07 21:13:35 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-04-07 21:13:35 +0000 |
commit | 2b695d8b7cd4960962bcb0eed3905a90ae678f37 (patch) | |
tree | 89552086efc88382c4ec6cc22de594e3b47122c3 /crawl-ref | |
parent | 2bc4605e6d2be94a4a79b02571ed041c62c20092 (diff) | |
download | crawl-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.cc | 24 | ||||
-rw-r--r-- | crawl-ref/source/fight.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/player.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/spells2.cc | 17 | ||||
-rw-r--r-- | crawl-ref/source/spells3.cc | 10 |
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); |