diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-17 06:33:24 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-06-17 06:33:24 +0000 |
commit | 24f899df4143cf27c98b218da786de393578e765 (patch) | |
tree | 9d81a68f2bb6e34647934b707d80036abc7f0cca /crawl-ref/source/spells3.cc | |
parent | c3e48e8a84795381523dc3c524a1720819341f74 (diff) | |
download | crawl-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/spells3.cc')
-rw-r--r-- | crawl-ref/source/spells3.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc index a95ed565dc..af3b06794b 100644 --- a/crawl-ref/source/spells3.cc +++ b/crawl-ref/source/spells3.cc @@ -205,14 +205,14 @@ int cast_smiting(int power, dist &beam) { monsters *monster = &menv[mgrd[beam.tx][beam.ty]]; - god_conduct_trigger conduct; - conduct.enabled = false; + god_conduct_trigger conducts[4]; + disable_attack_conducts(conducts); success = !stop_attack_prompt(monster, false, false); if (success) { - set_attack_conducts(monster, conduct); + set_attack_conducts(conducts, monster); mprf("You smite %s!", monster->name(DESC_NOCAP_THE).c_str()); @@ -221,7 +221,7 @@ int cast_smiting(int power, dist &beam) mimic_alert(monster); } - conduct.enabled = true; + enable_attack_conducts(conducts); if (success) { @@ -250,14 +250,14 @@ int airstrike(int power, dist &beam) { monsters *monster = &menv[mgrd[beam.tx][beam.ty]]; - god_conduct_trigger conduct; - conduct.enabled = false; + god_conduct_trigger conducts[4]; + disable_attack_conducts(conducts); success = !stop_attack_prompt(monster, false, false); if (success) { - set_attack_conducts(monster, conduct); + set_attack_conducts(conducts, monster); mprf("The air twists around and strikes %s!", monster->name(DESC_NOCAP_THE).c_str()); @@ -267,7 +267,7 @@ int airstrike(int power, dist &beam) mimic_alert(monster); } - conduct.enabled = true; + enable_attack_conducts(conducts); if (success) { |