summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spells2.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-25 17:33:38 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-05-25 17:33:38 +0000
commit63e4083df060b3cdd0ce18d04949dd7831cc10d4 (patch)
tree67311940576728ec6be2d310256d1727b9a77d5a /crawl-ref/source/spells2.cc
parent0eceb6ff8b8501d07c94e2e5d46aca19121b205e (diff)
downloadcrawl-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.cc52
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);