MCPcopy Create free account
hub / github.com/NetHack/NetHack / e_missed

Function e_missed

src/dbridge.c:495–525  ·  view source on GitHub ↗

* Does falling drawbridge or portcullis miss etmp? */

Source from the content-addressed store, hash-verified

493 * Does falling drawbridge or portcullis miss etmp?
494 */
495staticfn boolean
496e_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?

Callers 2

do_entityFunction · 0.85
destroy_drawbridgeFunction · 0.85

Calls 4

automissFunction · 0.85
is_poolFunction · 0.85
is_db_wallFunction · 0.85
rndFunction · 0.85

Tested by

no test coverage detected