| 1470 | } |
| 1471 | |
| 1472 | staticfn void |
| 1473 | drop_to(coord *cc, schar loc, coordxy x, coordxy y) |
| 1474 | { |
| 1475 | stairway *stway = stairway_at(x, y); |
| 1476 | |
| 1477 | /* cover all the MIGR_xxx choices generated by down_gate() */ |
| 1478 | switch (loc) { |
| 1479 | case MIGR_RANDOM: /* trap door or hole */ |
| 1480 | if (Is_stronghold(&u.uz)) { |
| 1481 | cc->x = valley_level.dnum; |
| 1482 | cc->y = valley_level.dlevel; |
| 1483 | break; |
| 1484 | } else if (In_endgame(&u.uz) || Is_botlevel(&u.uz)) { |
| 1485 | cc->y = cc->x = 0; |
| 1486 | break; |
| 1487 | } |
| 1488 | FALLTHROUGH; |
| 1489 | /*FALLTHRU*/ |
| 1490 | case MIGR_STAIRS_UP: |
| 1491 | case MIGR_LADDER_UP: |
| 1492 | case MIGR_SSTAIRS: |
| 1493 | if (stway) { |
| 1494 | cc->x = stway->tolev.dnum; |
| 1495 | cc->y = stway->tolev.dlevel; |
| 1496 | } else { |
| 1497 | cc->x = u.uz.dnum; |
| 1498 | cc->y = u.uz.dlevel + 1; |
| 1499 | } |
| 1500 | break; |
| 1501 | default: |
| 1502 | case MIGR_NOWHERE: |
| 1503 | /* y==0 means "nowhere", in which case x doesn't matter */ |
| 1504 | cc->y = cc->x = 0; |
| 1505 | break; |
| 1506 | } |
| 1507 | } |
| 1508 | |
| 1509 | /* player or missile impacts location, causing objects to fall down */ |
| 1510 | void |
no test coverage detected