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
|
and you didn't have a tool to unlock it
|
||||||
use silly names for rays (such as breath weapons) when hallucinating
|
use silly names for rays (such as breath weapons) when hallucinating
|
||||||
zombies groan instead of being silent
|
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
|
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();
|
i = -inv_weight();
|
||||||
j = weight_cap();
|
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 (i < (j * 3) / 10) {
|
||||||
if (!rn2((i < j / 10) ? 2 : (i < j / 5) ? 3 : 4)) {
|
if (!rn2((i < j / 10) ? 2 : (i < j / 5) ? 3 : 4)) {
|
||||||
if (martial() && !rn2(2))
|
if (martial())
|
||||||
goto doit;
|
goto doit;
|
||||||
Your("clumsy kick does no damage.");
|
Your("clumsy kick does no damage.");
|
||||||
(void) passive(mon, uarmf, FALSE, 1, AT_KICK, FALSE);
|
(void) passive(mon, uarmf, FALSE, 1, AT_KICK, FALSE);
|
||||||
|
|||||||
Reference in New Issue
Block a user