Martial arts users never deal no damage with a clumsy kick
From EvilHack, under the basis that anyone trained in martial arts (or is in a powerful kicking polyform or wearing kicking boots) should be immune from landing such a poor kick. This bypass used to happen only 50% of the time; now it happens all the time. Note that this only averts the "Your clumsy kick does no damage" case: it remains possible for a powerfully kicking player to kick clumsily and have the monster evade or block, for example if they are fumbling or wearing bulky armor. Also, documentation: I added a comment explaining what the incredibly dense and confusing logic is with i and j happening here, for the next poor soul that has to read that code.
This commit is contained in:
committed by
Pasi Kallinen
parent
a9712442dd
commit
d1b5b39e6d
@@ -782,6 +782,8 @@ looting will do #force if you could do it and the container is locked
|
||||
and you didn't have a tool to unlock it
|
||||
use silly names for rays (such as breath weapons) when hallucinating
|
||||
zombies groan instead of being silent
|
||||
martial arts users, sasquatches, and heroes wearing kicking boots can
|
||||
no longer miss a monster completely with a clumsy kick
|
||||
|
||||
|
||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||
|
||||
10
src/dokick.c
10
src/dokick.c
@@ -216,9 +216,17 @@ kick_monster(struct monst *mon, xchar x, xchar y)
|
||||
i = -inv_weight();
|
||||
j = weight_cap();
|
||||
|
||||
/* What the following confusing if statements mean:
|
||||
* If you are over 70% of carrying capacity, you go through a "deal no
|
||||
* damage" check, and if that fails, a "clumsy kick" check.
|
||||
* At this % of carrycap | Chance of no damage | Chance of clumsiness
|
||||
* [70%-80%) | 1/4 | 1/3
|
||||
* [80%-90%) | 1/3 | 1/2
|
||||
* [90%-100%) | 1/2 | 1
|
||||
*/
|
||||
if (i < (j * 3) / 10) {
|
||||
if (!rn2((i < j / 10) ? 2 : (i < j / 5) ? 3 : 4)) {
|
||||
if (martial() && !rn2(2))
|
||||
if (martial())
|
||||
goto doit;
|
||||
Your("clumsy kick does no damage.");
|
||||
(void) passive(mon, uarmf, FALSE, 1, AT_KICK, FALSE);
|
||||
|
||||
Reference in New Issue
Block a user