From f4435f65071c667729e13ccde226b120113a5742 Mon Sep 17 00:00:00 2001 From: dolorous Date: Sun, 18 Jan 2009 21:44:51 +0000 Subject: Fix check for monsters' negative energy resistance with regard to draining attacks. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8553 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/fight.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'crawl-ref/source/fight.cc') diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 5847e8fd4e..1f52917a6f 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -2050,11 +2050,14 @@ int melee_attack::fire_res_apply_cerebov_downgrade(int res) void melee_attack::drain_defender() { - if (defender->atype() == ACT_MONSTER && one_chance_in(3)) - return; - const int rn = defender->res_negative_energy(); + if (defender->atype() == ACT_MONSTER + && (rn > 0 || one_chance_in(3))) + { + return; + } + if (defender->drain_exp(attacker)) { if (defender->atype() == ACT_PLAYER) @@ -2875,7 +2878,7 @@ bool melee_attack::apply_damage_brand() } if (defender->holiness() != MH_NATURAL || !weapon - || defender->res_negative_energy() + || defender->res_negative_energy() > 0 || damage_done < 1 || attacker->stat_hp() == attacker->stat_maxhp() || one_chance_in(5)) { @@ -2924,8 +2927,10 @@ bool melee_attack::apply_damage_brand() break; } case SPWPN_PAIN: - if (!defender->res_negative_energy() - && x_chance_in_y(attacker->skill(SK_NECROMANCY) + 1, 8)) + if (defender->res_negative_energy() > 0) + break; + + if (x_chance_in_y(attacker->skill(SK_NECROMANCY) + 1, 8)) { if (defender_visible) { @@ -2936,6 +2941,7 @@ bool melee_attack::apply_damage_brand() } special_damage += random2( 1 + attacker->skill(SK_NECROMANCY) ); } + attacker->god_conduct(DID_NECROMANCY, 4); break; @@ -3229,7 +3235,7 @@ void melee_attack::player_apply_staff_damage() } case STAFF_DEATH: - if (defender->res_negative_energy()) + if (defender->res_negative_energy() > 0) break; if (x_chance_in_y(you.skills[SK_NECROMANCY] + 1, 8)) -- cgit v1.2.3-54-g00ecf