summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/beam.cc13
-rw-r--r--crawl-ref/source/fight.cc7
-rw-r--r--crawl-ref/source/misc.cc33
-rw-r--r--crawl-ref/source/misc.h5
-rw-r--r--crawl-ref/source/spells2.cc4
-rw-r--r--crawl-ref/source/spells3.cc8
6 files changed, 35 insertions, 35 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index e61a9ba80b..443e3ca5eb 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -4486,16 +4486,7 @@ static int _affect_monster(bolt &beam, monsters *mon, item_def *item)
remove_sanctuary(true);
}
- if (mons_friendly(mon))
- conduct.set(DID_ATTACK_FRIEND, 5, !okay, mon);
- else if (mons_neutral(mon))
- conduct.set(DID_ATTACK_NEUTRAL, 5, !okay, mon);
-
- if (is_unchivalric_attack(&you, mon, mon))
- conduct.set(DID_UNCHIVALRIC_ATTACK, 4, !okay, mon);
-
- if (mons_is_holy(mon))
- conduct.set(DID_ATTACK_HOLY, mon->hit_dice, !okay, mon);
+ set_attack_conduct(mon, conduct, !okay);
}
if (you.religion == GOD_BEOGH && mons_species(mon->type) == MONS_ORC
@@ -5474,7 +5465,7 @@ static bool _nasty_beam(monsters *mon, bolt &beam)
// pain/agony
if (beam.flavour == BEAM_PAIN)
- return (!mons_res_negative_energy( mon ));
+ return (!mons_res_negative_energy(mon));
// control demon
if (beam.flavour == BEAM_ENSLAVE_DEMON)
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index f890bac0ef..dd6fc25d32 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -606,7 +606,12 @@ bool melee_attack::attack()
conduct.enabled = false;
if (attacker->atype() == ACT_PLAYER)
- cancel_attack = stop_attack_prompt(def, false, false, &conduct);
+ {
+ if (!stop_attack_prompt(def, false, false))
+ set_attack_conduct(def, conduct);
+ else
+ cancel_attack = true;
+ }
// Trying to stay general beyond this point is a recipe for insanity.
// Maybe when Stone Soup hits 1.0... :-)
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc
index 1a3e99d9ed..b3d6cc4bbf 100644
--- a/crawl-ref/source/misc.cc
+++ b/crawl-ref/source/misc.cc
@@ -3000,9 +3000,8 @@ std::string your_hand(bool plural)
}
bool stop_attack_prompt(const monsters *mon, bool beam_attack,
- bool beam_target, god_conduct_trigger *conduct)
+ bool beam_target)
{
- bool retval = false;
bool prompt = false;
const bool inSanctuary = (is_sanctuary(you.x_pos, you.y_pos)
@@ -3049,24 +3048,20 @@ bool stop_attack_prompt(const monsters *mon, bool beam_attack,
prompt = true;
}
- if (you.confused() || (prompt && yesno(info, false, 'n')))
- {
- if (conduct)
- {
- if (isFriendly)
- conduct->set(DID_ATTACK_FRIEND, 5, true, mon);
- else if (isNeutral)
- conduct->set(DID_ATTACK_NEUTRAL, 5, true, mon);
+ return (!you.confused() && (!prompt || yesno(info, false, 'n')));
+}
- if (isUnchivalric)
- conduct->set(DID_UNCHIVALRIC_ATTACK, 4, true, mon);
+void set_attack_conduct(const monsters *mon, god_conduct_trigger& conduct,
+ bool known)
+{
+ if (mons_friendly(mon))
+ conduct.set(DID_ATTACK_FRIEND, 5, known, mon);
+ else if (mons_neutral(mon))
+ conduct.set(DID_ATTACK_NEUTRAL, 5, known, mon);
- if (isHoly)
- conduct->set(DID_ATTACK_HOLY, mon->hit_dice, true, mon);
- }
- }
- else
- retval = true;
+ if (is_unchivalric_attack(&you, mon, mon))
+ conduct.set(DID_UNCHIVALRIC_ATTACK, 4, known, mon);
- return retval;
+ if (mons_is_holy(mon))
+ conduct.set(DID_ATTACK_HOLY, mon->hit_dice, known, mon);
}
diff --git a/crawl-ref/source/misc.h b/crawl-ref/source/misc.h
index 13d8fd6864..6de8ff290a 100644
--- a/crawl-ref/source/misc.h
+++ b/crawl-ref/source/misc.h
@@ -147,6 +147,9 @@ void reveal_secret_door(int x, int y);
std::string your_hand(bool plural);
bool stop_attack_prompt(const monsters *mon, bool beam_attack,
- bool beam_target, god_conduct_trigger *conduct = NULL);
+ bool beam_target);
+
+void set_attack_conduct(const monsters *mon, god_conduct_trigger& conduct,
+ bool known = true);
#endif
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index 2f322535d9..f2bbe505f2 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -1192,10 +1192,12 @@ char burn_freeze(int pow, beam_type flavour)
god_conduct_trigger conduct;
conduct.enabled = false;
- bool success = !stop_attack_prompt(monster, false, false, &conduct);
+ bool success = !stop_attack_prompt(monster, false, false);
if (success)
{
+ set_attack_conduct(monster, conduct);
+
mprf("You %s %s.",
(flavour == BEAM_FIRE) ? "burn" :
(flavour == BEAM_COLD) ? "freeze" :
diff --git a/crawl-ref/source/spells3.cc b/crawl-ref/source/spells3.cc
index dd11b43503..110d24ee74 100644
--- a/crawl-ref/source/spells3.cc
+++ b/crawl-ref/source/spells3.cc
@@ -208,10 +208,12 @@ int cast_smiting(int power, dist &beam)
god_conduct_trigger conduct;
conduct.enabled = false;
- success = !stop_attack_prompt(monster, false, false, &conduct);
+ success = !stop_attack_prompt(monster, false, false);
if (success)
{
+ set_attack_conduct(monster, conduct);
+
mprf("You smite %s!", monster->name(DESC_NOCAP_THE).c_str());
behaviour_event(monster, ME_ANNOY, MHITYOU);
@@ -249,10 +251,12 @@ int airstrike(int power, dist &beam)
god_conduct_trigger conduct;
conduct.enabled = false;
- success = !stop_attack_prompt(monster, false, false, &conduct);
+ success = !stop_attack_prompt(monster, false, false);
if (success)
{
+ set_attack_conduct(monster, conduct);
+
mprf("The air twists around and strikes %s!",
monster->name(DESC_NOCAP_THE).c_str());