diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-05-25 17:33:38 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-05-25 17:33:38 +0000 |
commit | 63e4083df060b3cdd0ce18d04949dd7831cc10d4 (patch) | |
tree | 67311940576728ec6be2d310256d1727b9a77d5a /crawl-ref/source/spells2.cc | |
parent | 0eceb6ff8b8501d07c94e2e5d46aca19121b205e (diff) | |
download | crawl-ref-63e4083df060b3cdd0ce18d04949dd7831cc10d4.tar.gz crawl-ref-63e4083df060b3cdd0ce18d04949dd7831cc10d4.zip |
Consolidate the attack warning prompts for both melee and beams, and use
the prompts properly with Burn/Freeze, Smite, and Airstrike. Also, move
the now-single function for this into misc.cc, since I can't think of a
better location right now.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5235 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/spells2.cc')
-rw-r--r-- | crawl-ref/source/spells2.cc | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc index c261b9d04b..2f322535d9 100644 --- a/crawl-ref/source/spells2.cc +++ b/crawl-ref/source/spells2.cc @@ -35,7 +35,6 @@ #include "directn.h" #include "dungeon.h" #include "effects.h" -#include "fight.h" #include "itemname.h" #include "itemprop.h" #include "items.h" @@ -1190,42 +1189,35 @@ char burn_freeze(int pow, beam_type flavour) monsters *monster = &menv[mgr]; - mprf("You %s %s.", - (flavour == BEAM_FIRE) ? "burn" : - (flavour == BEAM_COLD) ? "freeze" : - (flavour == BEAM_MISSILE) ? "crush" : - (flavour == BEAM_ELECTRICITY) ? "zap" - : "______", - monster->name(DESC_NOCAP_THE).c_str()); - - int hurted = roll_dice( 1, 3 + pow / 3 ); - - bolt beam; - - beam.flavour = flavour; + god_conduct_trigger conduct; + conduct.enabled = false; - if (flavour != BEAM_MISSILE) - hurted = mons_adjust_flavoured(monster, beam, hurted); + bool success = !stop_attack_prompt(monster, false, false, &conduct); - if (hurted) + if (success) { - god_conduct_trigger conduct; - conduct.enabled = false; + mprf("You %s %s.", + (flavour == BEAM_FIRE) ? "burn" : + (flavour == BEAM_COLD) ? "freeze" : + (flavour == BEAM_MISSILE) ? "crush" : + (flavour == BEAM_ELECTRICITY) ? "zap" + : "______", + monster->name(DESC_NOCAP_THE).c_str()); - if (mons_friendly(monster)) - conduct.set(DID_ATTACK_FRIEND, 5, true, monster); - else if (mons_neutral(monster)) - conduct.set(DID_ATTACK_NEUTRAL, 5, true, monster); + behaviour_event(monster, ME_ANNOY, MHITYOU); + } - if (is_unchivalric_attack(&you, monster, monster)) - conduct.set(DID_UNCHIVALRIC_ATTACK, 4, true, monster); + conduct.enabled = true; - if (mons_is_holy(monster)) - conduct.set(DID_ATTACK_HOLY, monster->hit_dice); + if (success) + { + bolt beam; + beam.flavour = flavour; - behaviour_event(monster, ME_ANNOY, MHITYOU); + int hurted = roll_dice(1, 3 + pow / 3); - conduct.enabled = true; + if (flavour != BEAM_MISSILE) + hurted = mons_adjust_flavoured(monster, beam, hurted); hurt_monster(monster, hurted); @@ -1237,7 +1229,7 @@ char burn_freeze(int pow, beam_type flavour) if (flavour == BEAM_COLD) { - if (mons_class_flag( monster->type, M_COLD_BLOOD ) + if (mons_class_flag(monster->type, M_COLD_BLOOD) && coinflip()) { monster->add_ench(ENCH_SLOW); |