summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/beam.cc52
-rw-r--r--crawl-ref/source/fight.cc4
-rw-r--r--crawl-ref/source/mon-util.cc2
3 files changed, 42 insertions, 16 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index 34b544aa24..adc278cc61 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -2099,7 +2099,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (!hurted)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ {
+ simple_monster_message(monster,
+ (original > 0) ? " completely resists."
+ : " appears unharmed.");
+ }
}
else if (original > hurted)
{
@@ -2135,7 +2139,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (!hurted)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ {
+ simple_monster_message(monster,
+ (original > 0) ? " completely resists."
+ : " appears unharmed.");
+ }
}
else if (original > hurted)
{
@@ -2156,7 +2164,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (!hurted)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ {
+ simple_monster_message(monster,
+ (original > 0) ? " completely resists."
+ : " appears unharmed.");
+ }
}
break;
@@ -2167,7 +2179,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (!hurted)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ {
+ simple_monster_message(monster,
+ (original > 0) ? " completely resists."
+ : " appears unharmed.");
+ }
}
break;
@@ -2179,7 +2195,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (!hurted && res > 0)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ {
+ simple_monster_message(monster,
+ (original > 0) ? " completely resists."
+ : " appears unharmed.");
+ }
}
else if (res <= 0 && doFlavouredEffects && !one_chance_in(3))
poison_monster(monster, pbolt.whose_kill());
@@ -2212,29 +2232,31 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (mons_res_negative_energy(monster) == 3)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ simple_monster_message(monster, " completely resists.");
hurted = 0;
}
else
{
- // Early out for tracer/no side effects.
+ // Early out if no side effects.
if (!doFlavouredEffects)
return (hurted);
+ if (you.can_see(monster))
+ pbolt.obvious_effect = true;
+
monster->drain_exp(pbolt.agent());
- pbolt.obvious_effect = true;
if (YOU_KILL(pbolt.thrower))
did_god_conduct(DID_NECROMANCY, 2, pbolt.effect_known);
- } // end else
+ }
break;
case BEAM_MIASMA:
if (mons_res_negative_energy(monster) == 3)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ simple_monster_message(monster, " completely resists.");
hurted = 0;
}
@@ -2323,7 +2345,11 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
if (resist > 2)
{
if (doFlavouredEffects)
- simple_monster_message(monster, " appears unharmed.");
+ {
+ simple_monster_message(monster,
+ (original > 0) ? " completely resists."
+ : " appears unharmed.");
+ }
hurted = 0;
}
@@ -4034,7 +4060,7 @@ bool bolt::determine_damage(monsters* mon, int& preac, int& postac, int& final,
postac = std::max(postac, 0);
// Don't do side effects (beam might miss or be a tracer).
- final = mons_adjust_flavoured(mon, *this, preac, false);
+ final = mons_adjust_flavoured(mon, *this, postac, false);
return (true);
}
@@ -4455,7 +4481,7 @@ void bolt::affect_monster(monsters* mon)
if (!engulfs && !test_beam_hit(beam_hit, random2(mon->ev)))
{
// If the PLAYER cannot see the monster, don't tell them anything!
- if (player_monster_visible(mon) && mons_near(mon))
+ if (you.can_see(mon))
{
msg::stream << "The " << name << " misses "
<< mon->name(DESC_NOCAP_THE) << '.' << std::endl;
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index e9dc16ee95..317c7d2c72 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -184,11 +184,11 @@ int calc_your_to_hit( bool random_factor )
// be stochastic; if false, deterministic (e.g. for chardumps.)
int calc_heavy_armour_penalty( bool random_factor )
{
- const bool ur_armed = (you.equip[EQ_WEAPON] != -1);
+ const bool ur_armed = (you.weapon() != NULL);
int heavy_armour = 0;
// heavy armour modifiers for shield borne
- if (you.shield())
+ if (player_wearing_slot(EQ_SHIELD))
{
switch (you.shield()->sub_type)
{
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index ddaf81d597..b53296fa7b 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -5942,7 +5942,7 @@ bool monsters::drain_exp(actor *agent, bool quiet, int pow)
if (x_chance_in_y(res_negative_energy(), 3))
return (false);
- if (!quiet && mons_near(this) && player_monster_visible(this))
+ if (!quiet && you.can_see(this))
mprf("%s is drained!", name(DESC_CAP_THE).c_str());
// If quiet, don't clean up the monster in order to credit properly.