summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/fight.cc
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-22 16:06:43 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-22 16:23:34 +0100
commit98126e581296885c77454916d47d4a78021083da (patch)
treedcbe86154cde20810abbdff940581adc0828ba35 /crawl-ref/source/fight.cc
parentc7d57b148659539690dc87c4cd9f88b5124165af (diff)
downloadcrawl-ref-98126e581296885c77454916d47d4a78021083da.tar.gz
crawl-ref-98126e581296885c77454916d47d4a78021083da.zip
Rebalance distracted stabs (FR 2902035).
For any of the stab attempts with a roll, the chance to stab is increased by a factor 3/2 (now around dex+stab in 100 instead of dex+stab in 150), and damge bonus is halved. This may still improve damage output of highly-developed stabbers if they still do enough to kill most monsters in one hit, but I think it's ok. For the record, such a stabber will know do around 80-90 damage per hit against a confused monster, less against a distracted one.
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(),