pline("Pick a monster to hurtle.");
do {
- if (mtmp && !DEADMONSTER(mtmp) && canspotmon(mtmp)) {
- cc.x = mtmp->mx;
- cc.y = mtmp->my;
- }
-
ans = getpos(&cc, TRUE, "a monster");
if (ans < 0 || cc.x < 0)
return ECMD_CANCEL;
- if (((mtmp = m_at(cc.x, cc.y)) != 0) && canspotmon(mtmp)) {
+ if ((((mtmp = m_at(cc.x, cc.y)) != 0) && canspotmon(mtmp))
+ || u_at(cc.x, cc.y)) {
if (!getdir("which direction?"))
return ECMD_CANCEL;
- mhurtle(mtmp, u.dx, u.dy, 6);
+ if (mtmp) {
+ mhurtle(mtmp, u.dx, u.dy, 6);
+ if (!DEADMONSTER(mtmp) && canspotmon(mtmp)) {
+ cc.x = mtmp->mx;
+ cc.y = mtmp->my;
+ }
+ } else {
+ hurtle(u.dx, u.dy, 6, FALSE);
+ cc.x = u.ux, cc.y = u.uy;
+ }
}
} while (TRUE);