summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/beam.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-17 06:33:24 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-17 06:33:24 +0000
commit24f899df4143cf27c98b218da786de393578e765 (patch)
tree9d81a68f2bb6e34647934b707d80036abc7f0cca /crawl-ref/source/beam.cc
parentc3e48e8a84795381523dc3c524a1720819341f74 (diff)
downloadcrawl-ref-24f899df4143cf27c98b218da786de393578e765.tar.gz
crawl-ref-24f899df4143cf27c98b218da786de393578e765.zip
Fix attack conduct handling to register more than one conduct for an
attack again. For example, if you make an unchivalric attack on a neutral monster, both the "unchivalric attack" and "attack neutral" conducts will be handled again, instead of just the former (big oops). Passing a constant-sized array of god_conduct_triggers and adding wrapper functions to enable and disable them all is not the most elegant solution, but I don't quite have the time or the understanding right now to rewrite the god_conduct_trigger class to handle more than one conduct at once, and this does work in the meantime. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5914 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/beam.cc')
-rw-r--r--crawl-ref/source/beam.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index cc29d7f736..703ab87661 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -4374,8 +4374,8 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
if (submerged)
return (0);
- god_conduct_trigger conduct;
- conduct.enabled = false;
+ god_conduct_trigger conducts[4];
+ disable_attack_conducts(conducts);
// Nasty enchantments will annoy the monster, and are considered
// naughty (even if a monster might resist).
@@ -4389,7 +4389,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
remove_sanctuary(true);
}
- set_attack_conducts(mon, conduct);
+ set_attack_conducts(conducts, mon);
if (you.religion == GOD_BEOGH
&& mons_species(mon->type) == MONS_ORC
@@ -4405,7 +4405,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
else
behaviour_event(mon, ME_ALERT, _beam_source(beam));
- conduct.enabled = true;
+ enable_attack_conducts(conducts);
// !@#*( affect_monster_enchantment() has side-effects on
// the beam structure which screw up range_used_on_hit(),
@@ -4557,8 +4557,8 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
// fire elementals on their side - the elementals won't give a sh*t,
// after all).
- god_conduct_trigger conduct;
- conduct.enabled = false;
+ god_conduct_trigger conducts[4];
+ disable_attack_conducts(conducts);
if (_nasty_beam(mon, beam))
{
@@ -4574,7 +4574,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
remove_sanctuary(true);
}
- set_attack_conducts(mon, conduct, !okay);
+ set_attack_conducts(conducts, mon, !okay);
}
if (you.religion == GOD_BEOGH && mons_species(mon->type) == MONS_ORC
@@ -4630,7 +4630,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
_update_hurt_or_helped(beam, mon);
- conduct.enabled = true;
+ enable_attack_conducts(conducts);
// The beam hit.
if (mons_near(mon))