summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/fight.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/fight.cc')
-rw-r--r--crawl-ref/source/fight.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index d420986590..be37c09cfb 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -316,11 +316,11 @@ unchivalric_attack_type is_unchivalric_attack(const actor *attacker,
unchivalric = UCAT_INVISIBLE;
// held in a net
- if (def->has_ench(ENCH_HELD))
+ if (def->has_ench(ENCH_HELD) || def->has_ench(ENCH_PETRIFYING))
unchivalric = UCAT_HELD_IN_NET;
// paralysed
- if (def->has_ench(ENCH_PARALYSIS))
+ if (def->cannot_act())
unchivalric = UCAT_PARALYSED;
// sleeping
@@ -1305,8 +1305,10 @@ bool melee_attack::player_hits_monster()
return (to_hit >= def->ev
|| one_chance_in(20)
- || ((mons_is_paralysed(def) || def->behaviour == BEH_SLEEP)
- && !one_chance_in(10 + you.skills[SK_STABBING])));
+ || ((mons_cannot_act(def) || def->behaviour == BEH_SLEEP)
+ && !one_chance_in(10 + you.skills[SK_STABBING]))
+ || mons_is_petrifying(def)
+ && !one_chance_in(2 + you.skills[SK_STABBING]));
}
int melee_attack::player_stat_modify_damage(int damage)
@@ -1517,7 +1519,7 @@ int melee_attack::player_stab(int damage)
if (def->behaviour == BEH_SLEEP)
{
- // Sleeping moster wakes up when stabbed but may be groggy
+ // Sleeping moster wakes up when stabbed but may be groggy.
if (random2(200) <= you.skills[SK_STABBING] + you.dex)
{
int stun = random2( you.dex + 1 );
@@ -1530,6 +1532,8 @@ int melee_attack::player_stab(int damage)
}
damage = player_stab_weapon_bonus(damage);
+ if (mons_is_petrified(def))
+ damage /= 3;
}
return (damage);