OSDN Git Service

[Refactor] #38997 kawarimi() に player_type * 引数を追加. / Add player_type * argument...
authordeskull <deskull@users.sourceforge.jp>
Thu, 2 Jan 2020 10:11:26 +0000 (19:11 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Thu, 2 Jan 2020 10:11:26 +0000 (19:11 +0900)
src/combat/melee1.c
src/spells.h
src/spells1.c
src/spells2.c

index 884a667..834b20f 100644 (file)
@@ -2405,7 +2405,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 
        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 */
@@ -4042,7 +4042,7 @@ bool make_attack_normal(player_type *target_ptr, MONSTER_IDX m_idx)
 
                if (target_ptr->special_defense & NINJA_KAWARIMI)
                {
-                       if (kawarimi(FALSE)) return TRUE;
+                       if (kawarimi(target_ptr, FALSE)) return TRUE;
                }
        }
 
index a8afaa1..47fe1d4 100644 (file)
@@ -245,7 +245,7 @@ extern bool project_hook(player_type *caster_ptr, EFFECT_ID typ, DIRECTION dir,
 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);
index fd632eb..067510d 100644 (file)
@@ -4028,7 +4028,7 @@ static bool project_p(MONSTER_IDX who, player_type *target_ptr, concptr who_name
 
        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 */
@@ -5078,7 +5078,7 @@ static bool project_p(MONSTER_IDX who, player_type *target_ptr, concptr who_name
 
        if ((target_ptr->special_defense & NINJA_KAWARIMI) && dam && who && (who != target_ptr->riding))
        {
-               (void)kawarimi(FALSE);
+               (void)kawarimi(target_ptr, FALSE);
        }
 
        /* Return "Anything seen?" */
index 09104ec..4fcae37 100644 (file)
@@ -2949,28 +2949,28 @@ bool charm_animal(DIRECTION dir, PLAYER_LEVEL plev)
  * @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));
 
@@ -2980,8 +2980,8 @@ bool kawarimi(bool success)
        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;