| 878 | } |
| 879 | |
| 880 | staticfn void |
| 881 | kick_ouch(coordxy x, coordxy y, const char *kickobjnam) |
| 882 | { |
| 883 | int dmg; |
| 884 | char buf[BUFSZ]; |
| 885 | |
| 886 | pline("Ouch! That hurts!"); |
| 887 | exercise(A_DEX, FALSE); |
| 888 | exercise(A_STR, FALSE); |
| 889 | if (isok(x, y)) { |
| 890 | if (Blind) |
| 891 | feel_location(x, y); /* we know we hit it */ |
| 892 | if (is_drawbridge_wall(x, y) >= 0) { |
| 893 | pline_The("drawbridge is unaffected."); |
| 894 | /* update maploc to refer to the drawbridge */ |
| 895 | (void) find_drawbridge(&x, &y); |
| 896 | gm.maploc = &levl[x][y]; |
| 897 | } |
| 898 | wake_nearto(x, y, 5 * 5); |
| 899 | } |
| 900 | if (!rn2(3)) |
| 901 | set_wounded_legs(RIGHT_SIDE, 5 + rnd(5)); |
| 902 | dmg = rnd(ACURR(A_CON) > 15 ? 3 : 5); |
| 903 | losehp(Maybe_Half_Phys(dmg), kickstr(buf, kickobjnam), KILLED_BY); |
| 904 | if (Is_airlevel(&u.uz) || Levitation) |
| 905 | hurtle(-u.dx, -u.dy, rn1(2, 4), TRUE); /* assume it's heavy */ |
| 906 | } |
| 907 | |
| 908 | /* kick a door */ |
| 909 | staticfn void |
no test coverage detected