| 2393 | } |
| 2394 | |
| 2395 | staticfn void |
| 2396 | slippery_ice_fumbling(void) |
| 2397 | { |
| 2398 | boolean on_ice = !Levitation && is_ice(u.ux, u.uy); |
| 2399 | struct monst *iceskater = u.usteed ? u.usteed : &gy.youmonst; |
| 2400 | |
| 2401 | if (on_ice) { |
| 2402 | if ((uarmf && objdescr_is(uarmf, "snow boots")) |
| 2403 | || resists_cold(iceskater) || Flying |
| 2404 | || is_floater(iceskater->data) || is_clinger(iceskater->data) |
| 2405 | || is_whirly(iceskater->data)) { |
| 2406 | on_ice = FALSE; |
| 2407 | } else if (!rn2(Cold_resistance ? 3 : 2)) { |
| 2408 | HFumbling |= FROMOUTSIDE; |
| 2409 | HFumbling &= ~TIMEOUT; |
| 2410 | HFumbling += 1; /* slip on next move */ |
| 2411 | } |
| 2412 | } |
| 2413 | if (!on_ice && (HFumbling & FROMOUTSIDE)) |
| 2414 | HFumbling &= ~FROMOUTSIDE; |
| 2415 | } |
| 2416 | |
| 2417 | boolean |
| 2418 | u_maybe_impaired(void) |
no test coverage detected