From 3947969b0bdd2e27e2e6c98efc4850e9caae974c Mon Sep 17 00:00:00 2001 From: dshaligram Date: Sat, 12 Jan 2008 17:58:31 +0000 Subject: Fixed shield bonus when confused (syllogism). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3259 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/externs.h | 2 +- crawl-ref/source/mon-util.cc | 4 ++++ crawl-ref/source/player.cc | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) (limited to 'crawl-ref') diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h index c6e372094e..e463b9b000 100644 --- a/crawl-ref/source/externs.h +++ b/crawl-ref/source/externs.h @@ -202,7 +202,7 @@ public: virtual bool incapacitated() const { - return paralysed() || confused() || caught(); + return paralysed() || asleep() || confused() || caught(); } virtual int holy_aura() const diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index bc321043ec..f74b9c364a 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -3533,6 +3533,10 @@ int monsters::shield_bonus() const const item_def *shld = const_cast(this)->shield(); if (shld) { + // Note that 0 is not quite no-blocking. + if (incapacitated()) + return (0); + const int shld_c = property(*shld, PARM_AC); return (random2(1 + shld_c) + random2(hit_dice / 2)); } diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index ed1f96de09..8ce441481a 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -5874,6 +5874,10 @@ int player::shield_bonus() const const int shield_class = player_shield_class(); if (!shield_class) return (-100); + + // Note that 0 is not quite no-blocking. + if (incapacitated()) + return (0); int stat = 0; if (const item_def *sh = const_cast(this)->shield()) -- cgit v1.2.3-54-g00ecf