From 24f899df4143cf27c98b218da786de393578e765 Mon Sep 17 00:00:00 2001 From: dolorous Date: Tue, 17 Jun 2008 06:33:24 +0000 Subject: 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 --- crawl-ref/source/beam.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'crawl-ref/source/beam.cc') 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)) -- cgit v1.2.3-54-g00ecf