OSDN Git Service

[Refactor] #37353 コメント整理。 / Refactor comments.
[hengband/hengband.git] / src / racial.c
index 10c693d..7d6ff76 100644 (file)
 #include "realm-hex.h"
 
 /*!
- * @brief 魔法系コマンドを実行できるかの判定を返す
- * @return 魔法系コマンドを使用可能ならTRUE、不可能ならば理由をメッセージ表示してFALSEを返す。
- */
-static bool can_do_cmd_cast(void)
-{
-       if (dun_level && (d_info[dungeon_type].flags1 & DF1_NO_MAGIC))
-       {
-               msg_print(_("ダンジョンが魔法を吸収した!", "The dungeon absorbs all attempted magic!"));
-               msg_print(NULL);
-               return FALSE;
-       }
-       else if (p_ptr->anti_magic)
-       {
-               msg_print(_("反魔法バリアが魔法を邪魔した!", "An anti-magic shell disrupts your magic!"));
-               return FALSE;
-       }
-       else if (p_ptr->shero)
-       {
-               msg_format(_("狂戦士化していて頭が回らない!", "You cannot think directly!"));
-               return FALSE;
-       }
-       else
-               return TRUE;
-}
-
-/*!
  * @brief 修行僧の構え設定処理
  * @return 構えを変化させたらTRUE、構え不能かキャンセルしたらFALSEを返す。
  */
@@ -61,11 +35,7 @@ static bool choose_kamae(void)
        int i;
        char buf[80];
 
-       if (p_ptr->confused)
-       {
-               msg_print(_("混乱していて構えられない!", "Too confused."));
-               return FALSE;
-       }
+       if (cmd_limit_confused(p_ptr)) return FALSE;
        screen_save();
        prt(_(" a) 構えをとく", " a) No form"), 2, 20);
 
@@ -152,11 +122,7 @@ static bool choose_kata(void)
        int i;
        char buf[80];
 
-       if (p_ptr->confused)
-       {
-               msg_print(_("混乱していて構えられない!", "Too confused."));
-               return FALSE;
-       }
+       if (cmd_limit_confused(p_ptr)) return FALSE;
 
        if (p_ptr->stun)
        {
@@ -258,7 +224,7 @@ struct power_desc_type
        PLAYER_LEVEL level;     //!<体得レベル
        int cost;
        int stat;
-       int fail;
+       PERCENTAGE fail;
        int number;
 };
 
@@ -271,12 +237,12 @@ struct power_desc_type
 static PERCENTAGE racial_chance(power_desc_type *pd_ptr)
 {
        PLAYER_LEVEL min_level  = pd_ptr->level;
-       int difficulty = pd_ptr->fail;
+       PERCENTAGE difficulty = pd_ptr->fail;
 
        int i;
        int val;
        int sum = 0;
-       int stat = p_ptr->stat_cur[pd_ptr->stat];
+       BASE_STATUS stat = p_ptr->stat_cur[pd_ptr->stat];
 
        /* No chance for success */
        if ((p_ptr->lev < min_level) || p_ptr->confused)
@@ -289,11 +255,11 @@ static PERCENTAGE racial_chance(power_desc_type *pd_ptr)
        /* Calculate difficulty */
        if (p_ptr->stun)
        {
-               difficulty += p_ptr->stun;
+               difficulty += (PERCENTAGE)p_ptr->stun;
        }
        else if (p_ptr->lev > min_level)
        {
-               int lev_adj = ((p_ptr->lev - min_level) / 3);
+               PERCENTAGE lev_adj = (PERCENTAGE)((p_ptr->lev - min_level) / 3);
                if (lev_adj > 10) lev_adj = 10;
                difficulty -= lev_adj;
        }
@@ -344,16 +310,14 @@ static int racial_aux(power_desc_type *pd_ptr)
                msg_format(_("この能力を使用するにはレベル %d に達していなければなりません。", 
                                         "You need to attain level %d to use this power."), min_level);
 
-               p_ptr->energy_use = 0;
-               return 0;
+               free_turn(p_ptr);
+               return FALSE;
        }
 
-       /* Too confused */
-       else if (p_ptr->confused)
+       if (cmd_limit_confused(p_ptr))
        {
-               msg_print(_("混乱していてその能力は使えない。", "You are too confused to use this power."));
-               p_ptr->energy_use = 0;
-               return 0;
+               free_turn(p_ptr);
+               return FALSE;
        }
 
        /* Risk death? */
@@ -361,8 +325,8 @@ static int racial_aux(power_desc_type *pd_ptr)
        {
                if (!get_check(_("本当に今の衰弱した状態でこの能力を使いますか?", "Really use the power in your weakened state? ")))
                {
-                       p_ptr->energy_use = 0;
-                       return 0;
+                       free_turn(p_ptr);
+                       return FALSE;
                }
        }
 
@@ -385,7 +349,7 @@ static int racial_aux(power_desc_type *pd_ptr)
        }
 
        /* take time and pay the price */
-       p_ptr->energy_use = 100;
+       take_turn(p_ptr, 100);;
 
        /* Success? */
        if (randint1(p_ptr->stat_cur[use_stat]) >= ((difficulty / 2) + randint1(difficulty / 2)))
@@ -555,7 +519,7 @@ static bool cmd_racial_power_aux(s32b command)
                        if (command == -3) {
                                if (!import_magic_device()) return FALSE;
                        } else if (command == -4) {
-                               if (!can_do_cmd_cast()) return FALSE;
+                               if (cmd_limit_cast(p_ptr)) return FALSE;
                                if (!do_cmd_magic_eater(FALSE, TRUE)) return FALSE;
                        }
                        break;
@@ -571,11 +535,11 @@ static bool cmd_racial_power_aux(s32b command)
                }
                case CLASS_RED_MAGE:
                {
-                       if (!can_do_cmd_cast()) return FALSE;
+                       if (cmd_limit_cast(p_ptr)) return FALSE;
                        handle_stuff();
                        do_cmd_cast();
                        handle_stuff();
-                       if (!p_ptr->paralyzed && can_do_cmd_cast())
+                       if (!p_ptr->paralyzed && !cmd_limit_cast(p_ptr))
                                do_cmd_cast();
                        break;
                }
@@ -606,7 +570,7 @@ static bool cmd_racial_power_aux(s32b command)
                        {
                                set_action(ACTION_LEARN);
                        }
-                       p_ptr->energy_use = 0;
+                       free_turn(p_ptr);
                        break;
                }
                case CLASS_CAVALRY:
@@ -835,7 +799,7 @@ static bool cmd_racial_power_aux(s32b command)
 
                default:
                        msg_print(_("この種族は特殊な能力を持っていません。", "This race has no bonus power."));
-                       p_ptr->energy_use = 0;
+                       free_turn(p_ptr);
        }
        }
        return TRUE;
@@ -868,10 +832,9 @@ void do_cmd_racial_power(void)
 
        num = 0;
 
-       if (p_ptr->confused)
+       if (cmd_limit_confused(p_ptr))
        {
-               msg_print(_("混乱していて特殊能力を使えません!", "You are too confused to use any powers!"));
-               p_ptr->energy_use = 0;
+               free_turn(p_ptr);
                return;
        }
 
@@ -1855,7 +1818,7 @@ if (!repeat_pull(&i) || i<0 || i>=num) {
                                case '0':
                                {
                                        screen_load();
-                                       p_ptr->energy_use = 0;
+                                       free_turn(p_ptr);
                                        return;
                                }
 
@@ -2019,7 +1982,7 @@ if (!repeat_pull(&i) || i<0 || i>=num) {
        /* Abort if needed */
        if (!flag)
        {
-               p_ptr->energy_use = 0;
+               free_turn(p_ptr);
                return;
        }
        repeat_push(i);
@@ -2061,7 +2024,7 @@ if (!repeat_pull(&i) || i<0 || i>=num) {
                        p_ptr->window |= (PW_PLAYER | PW_SPELL);
                }
        }
-       else p_ptr->energy_use = 0;
+       else free_turn(p_ptr);
 
        /* Success */
        return;