extern bool project_hack(int typ, int dam);
extern bool eat_magic(int power);
extern void discharge_minion(void);
-extern void kawarimi(bool success);
+extern bool kawarimi(bool success);
extern bool rush_attack(bool *mdeath);
extern void remove_all_mirrors(bool explode);
if ((p_ptr->special_defense & NINJA_KAWARIMI) && (randint0(55) < (p_ptr->lev*3/5+20)))
{
- kawarimi(TRUE);
- return TRUE;
+ if (kawarimi(TRUE)) return TRUE;
}
/* Assume no blink */
#endif
}
}
+
if (p_ptr->special_defense & NINJA_KAWARIMI)
{
- kawarimi(FALSE);
- return TRUE;
+ if (kawarimi(FALSE)) return TRUE;
}
}
if ((p_ptr->special_defense & NINJA_KAWARIMI) && dam && (randint0(55) < (p_ptr->lev*3/5+20)) && who && (who != p_ptr->riding))
{
- kawarimi(TRUE);
- return FALSE;
+ if (kawarimi(TRUE)) return FALSE;
}
/* Player cannot hurt himself */
if ((p_ptr->special_defense & NINJA_KAWARIMI) && dam && who && (who != p_ptr->riding))
{
- kawarimi(FALSE);
- return obvious;
+ (void)kawarimi(FALSE);
}
/* Return "Anything seen?" */
}
-void kawarimi(bool success)
+bool kawarimi(bool success)
{
object_type forge;
object_type *q_ptr = &forge;
int y, x;
- if (p_ptr->confused || p_ptr->blind || p_ptr->paralyzed || p_ptr->image) return;
- if (randint0(200) < p_ptr->stun) return;
+ if (p_ptr->is_dead) return FALSE;
+ if (p_ptr->confused || p_ptr->blind || p_ptr->paralyzed || p_ptr->image) return FALSE;
+ if (randint0(200) < p_ptr->stun) return FALSE;
if (!success && one_in_(3))
{
#endif
p_ptr->special_defense &= ~(NINJA_KAWARIMI);
p_ptr->redraw |= (PR_STATUS);
- return;
+ return FALSE;
}
y = py;
p_ptr->special_defense &= ~(NINJA_KAWARIMI);
p_ptr->redraw |= (PR_STATUS);
+
+ /* Teleported */
+ return TRUE;
}