diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-22 16:06:43 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-22 16:23:34 +0100 |
commit | 98126e581296885c77454916d47d4a78021083da (patch) | |
tree | dcbe86154cde20810abbdff940581adc0828ba35 /crawl-ref/source/fight.cc | |
parent | c7d57b148659539690dc87c4cd9f88b5124165af (diff) | |
download | crawl-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.cc | 23 |
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(), |