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.cc23
1 files changed, 13 insertions, 10 deletions
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index e048be701a..45dc832c59 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -1668,7 +1668,7 @@ int melee_attack::player_stab_weapon_bonus(int damage)
ok_weaps:
case SK_LONG_BLADES:
damage *= 10 + you.skills[SK_STABBING] /
- (stab_bonus + (wpn_skill == SK_SHORT_BLADES ? 0 : 1));
+ (stab_bonus + (wpn_skill == SK_SHORT_BLADES ? 0 : 2));
damage /= 10;
// fall through
default:
@@ -3984,29 +3984,31 @@ void melee_attack::player_stab_check()
stab_attempt = (uat != UCAT_NO_ATTACK);
const bool roll_needed = (uat != UCAT_SLEEPING && uat != UCAT_PARALYSED);
- int roll = 155;
+ int roll = 100;
if (uat == UCAT_INVISIBLE && !mons_sense_invis(defender_as_monster()))
- roll -= 15;
+ roll -= 10;
switch (uat)
{
case UCAT_NO_ATTACK:
stab_bonus = 0;
break;
- case UCAT_HELD_IN_NET:
- case UCAT_PETRIFYING:
- case UCAT_PETRIFIED:
case UCAT_SLEEPING:
case UCAT_PARALYSED:
stab_bonus = 1;
break;
+ case UCAT_HELD_IN_NET:
+ case UCAT_PETRIFYING:
+ case UCAT_PETRIFIED:
+ stab_bonus = 2;
+ break;
case UCAT_INVISIBLE:
case UCAT_CONFUSED:
case UCAT_FLEEING:
- stab_bonus = 2;
+ stab_bonus = 4;
break;
case UCAT_DISTRACTED:
- stab_bonus = 3;
+ stab_bonus = 6;
break;
}
@@ -5896,7 +5898,7 @@ static void stab_message(actor *defender, int stab_bonus)
{
switch (stab_bonus)
{
- case 3: // big melee, monster surrounded/not paying attention
+ case 6: // big melee, monster surrounded/not paying attention
if (coinflip())
{
mprf( "You strike %s from a blind spot!",
@@ -5908,7 +5910,7 @@ static void stab_message(actor *defender, int stab_bonus)
defender->name(DESC_NOCAP_THE).c_str() );
}
break;
- case 2: // confused/fleeing
+ case 4: // confused/fleeing
if (!one_chance_in(3))
{
mprf( "You catch %s completely off-guard!",
@@ -5920,6 +5922,7 @@ static void stab_message(actor *defender, int stab_bonus)
defender->name(DESC_NOCAP_THE).c_str() );
}
break;
+ case 2:
case 1:
mprf( "%s fails to defend %s.",
defender->name(DESC_CAP_THE).c_str(),