* Does falling drawbridge or portcullis miss etmp? */
| 493 | * Does falling drawbridge or portcullis miss etmp? |
| 494 | */ |
| 495 | staticfn boolean |
| 496 | e_missed(struct entity *etmp, boolean chunks) |
| 497 | { |
| 498 | int misses; |
| 499 | |
| 500 | if (chunks) { |
| 501 | debugpline0("Do chunks miss?"); |
| 502 | } |
| 503 | if (automiss(etmp)) |
| 504 | return TRUE; |
| 505 | |
| 506 | if (is_flyer(etmp->edata) |
| 507 | && (is_u(etmp) ? !Unaware |
| 508 | : !helpless(etmp->emon))) |
| 509 | /* flying requires mobility */ |
| 510 | misses = 5; /* out of 8 */ |
| 511 | else if (is_floater(etmp->edata) |
| 512 | || (is_u(etmp) && Levitation)) /* doesn't require mobility */ |
| 513 | misses = 3; |
| 514 | else if (chunks && is_pool(etmp->ex, etmp->ey)) |
| 515 | misses = 2; /* sitting ducks */ |
| 516 | else |
| 517 | misses = 0; |
| 518 | |
| 519 | if (is_db_wall(etmp->ex, etmp->ey)) |
| 520 | misses -= 3; /* less airspace */ |
| 521 | |
| 522 | debugpline1("Miss chance = %d (out of 8)", misses); |
| 523 | |
| 524 | return (misses >= rnd(8)) ? TRUE : FALSE; |
| 525 | } |
| 526 | |
| 527 | /* |
| 528 | * Can etmp jump from death? |
no test coverage detected