if ((target_ptr->special_defense & NINJA_KAWARIMI) && (randint0(55) < (target_ptr->lev*3/5+20)))
{
- if (kawarimi(TRUE)) return TRUE;
+ if (kawarimi(target_ptr, TRUE)) return TRUE;
}
/* Assume no blink */
if (target_ptr->special_defense & NINJA_KAWARIMI)
{
- if (kawarimi(FALSE)) return TRUE;
+ if (kawarimi(target_ptr, FALSE)) return TRUE;
}
}
extern bool project_all_los(player_type *caster_ptr, EFFECT_ID typ, HIT_POINT dam);
extern bool eat_magic(player_type *caster_ptr, int power);
extern void discharge_minion(player_type *caster_ptr);
-extern bool kawarimi(bool success);
+extern bool kawarimi(player_type *caster_ptr, bool success);
extern bool rush_attack(player_type *attacker_ptr, bool *mdeath);
extern void remove_all_mirrors(player_type *caster_ptr, bool explode);
extern void ring_of_power(player_type *caster_ptr, DIRECTION dir);
if ((target_ptr->special_defense & NINJA_KAWARIMI) && dam && (randint0(55) < (target_ptr->lev * 3 / 5 + 20)) && who && (who != target_ptr->riding))
{
- if (kawarimi(TRUE)) return FALSE;
+ if (kawarimi(target_ptr, TRUE)) return FALSE;
}
/* Player cannot hurt himself */
if ((target_ptr->special_defense & NINJA_KAWARIMI) && dam && who && (who != target_ptr->riding))
{
- (void)kawarimi(FALSE);
+ (void)kawarimi(target_ptr, FALSE);
}
/* Return "Anything seen?" */
* @param success 判定成功上の処理ならばTRUE
* @return 作用が実際にあった場合TRUEを返す
*/
-bool kawarimi(bool success)
+bool kawarimi(player_type *caster_ptr, bool success)
{
object_type forge;
object_type *q_ptr = &forge;
POSITION y, x;
- 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 (caster_ptr->is_dead) return FALSE;
+ if (caster_ptr->confused || caster_ptr->blind || caster_ptr->paralyzed || caster_ptr->image) return FALSE;
+ if (randint0(200) < caster_ptr->stun) return FALSE;
if (!success && one_in_(3))
{
msg_print(_("失敗!逃げられなかった。", "Failed! You couldn't run away."));
- p_ptr->special_defense &= ~(NINJA_KAWARIMI);
- p_ptr->redraw |= (PR_STATUS);
+ caster_ptr->special_defense &= ~(NINJA_KAWARIMI);
+ caster_ptr->redraw |= (PR_STATUS);
return FALSE;
}
- y = p_ptr->y;
- x = p_ptr->x;
+ y = caster_ptr->y;
+ x = caster_ptr->x;
- teleport_player(p_ptr, 10 + randint1(90), 0L);
+ teleport_player(caster_ptr, 10 + randint1(90), 0L);
object_wipe(q_ptr);
object_prep(q_ptr, lookup_kind(TV_STATUE, SV_WOODEN_STATUE));
if (success) msg_print(_("攻撃を受ける前に素早く身をひるがえした。", "You have turned around just before the attack hit you."));
else msg_print(_("失敗!攻撃を受けてしまった。", "Failed! You are hit by the attack."));
- p_ptr->special_defense &= ~(NINJA_KAWARIMI);
- p_ptr->redraw |= (PR_STATUS);
+ caster_ptr->special_defense &= ~(NINJA_KAWARIMI);
+ caster_ptr->redraw |= (PR_STATUS);
/* Teleported */
return TRUE;