OSDN Git Service

[Refactor] #37353 spells.hにスペルに関する共通定義を追加。。 / Add common definition to spells.h.
[hengband/hengband.git] / src / snipe.c
index b671f53..3900818 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "angband.h"
+#include "player-status.h"
 
 #define MAX_SNIPE_POWERS 16
 
@@ -18,11 +19,11 @@ struct snipe_power
 {
        int     min_lev;
        int     mana_cost;
-       const char *name;
+       concptr name;
 };
 
 /*! スナイパー技能の解説メッセージ */
-static cptr const snipe_tips[MAX_SNIPE_POWERS] =
+static concptr const snipe_tips[MAX_SNIPE_POWERS] =
 {
 #ifdef JP
        "精神を集中する。射撃の威力、精度が上がり、高度な射撃術が使用できるようになる。",
@@ -113,14 +114,8 @@ static bool snipe_concentrate(void)
        msg_format(_("集中した。(集中度 %d)", "You concentrate deeply. (lvl %d)"), p_ptr->concent);
        reset_concent = FALSE;
 
-       /* Recalculate bonuses */
-       p_ptr->update |= (PU_BONUS);
-
+       p_ptr->update |= (PU_BONUS | PU_MONSTERS);
        p_ptr->redraw |= (PR_STATUS);
-
-       /* Update the monsters */
-       p_ptr->update |= (PU_MONSTERS);
-
        return (TRUE);
 }
 
@@ -139,13 +134,8 @@ void reset_concentration(bool msg)
        p_ptr->concent = 0;
        reset_concent = FALSE;
 
-       /* Recalculate bonuses */
-       p_ptr->update |= (PU_BONUS);
-
+       p_ptr->update |= (PU_BONUS | PU_MONSTERS);
        p_ptr->redraw |= (PR_STATUS);
-
-       /* Update the monsters */
-       p_ptr->update |= (PU_MONSTERS);
 }
 
 /*! 
@@ -170,7 +160,7 @@ void display_snipe_list(void)
        int             i;
        int             y = 1;
        int             x = 1;
-       int             plev = p_ptr->lev;
+       PLAYER_LEVEL plev = p_ptr->lev;
        snipe_power     spell;
        char            psi_desc[80];
 
@@ -226,16 +216,14 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
        int             num = 0;
        int             y = 1;
        int             x = 20;
-       int             plev = p_ptr->lev;
+       PLAYER_LEVEL plev = p_ptr->lev;
        int             ask;
        char            choice;
        char            out_val[160];
-       cptr            p = _("射撃術", "power");
+       concptr            p = _("射撃術", "power");
        snipe_power     spell;
        bool            flag, redraw;
 
-#ifdef ALLOW_REPEAT /* TNB */
-
        repeat_push(*sn);
 
        /* Assume cancelled */
@@ -253,8 +241,6 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
                }
        }
 
-#endif /* ALLOW_REPEAT -- TNB */
-
        /* Nothing chosen yet */
        flag = FALSE;
 
@@ -301,8 +287,6 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
 
                                /* Show list */
                                redraw = TRUE;
-
-                               /* Save the screen */
                                if (!only_browse) screen_save();
 
                                /* Display a list of spells */
@@ -343,8 +327,6 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
                        {
                                /* Hide list */
                                redraw = FALSE;
-
-                               /* Restore the screen */
                                if (!only_browse) screen_load();
                        }
 
@@ -356,7 +338,7 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
                ask = isupper(choice);
 
                /* Lowercase */
-               if (ask) choice = tolower(choice);
+               if (ask) choice = (char)tolower(choice);
 
                /* Extract request */
                i = (islower(choice) ? A2I(choice) : -1);
@@ -387,15 +369,10 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
                /* Stop the loop */
                flag = TRUE;
        }
-
-       /* Restore the screen */
        if (redraw && !only_browse) screen_load();
 
-       /* Show choices */
        p_ptr->window |= (PW_SPELL);
-
-       /* Window stuff */
-       window_stuff();
+       handle_stuff();
 
        /* Abort if needed */
        if (!flag) return (FALSE);
@@ -403,12 +380,8 @@ static int get_snipe_power(COMMAND_CODE *sn, bool only_browse)
        /* Save the choice */
        (*sn) = i;
 
-#ifdef ALLOW_REPEAT /* TNB */
-
        repeat_push(*sn);
 
-#endif /* ALLOW_REPEAT -- TNB */
-
        /* Success */
        return (TRUE);
 }
@@ -533,7 +506,7 @@ static bool cast_sniper_spell(int spell)
        {
        case 0: /* Concentration */
                if (!snipe_concentrate()) return (FALSE);
-               p_ptr->energy_use = 100;
+               take_turn(p_ptr, 100);;
                return (TRUE);
        case 1: snipe_type = SP_LITE; break;
        case 2: snipe_type = SP_AWAY; break;
@@ -570,13 +543,7 @@ void do_cmd_snipe(void)
        COMMAND_CODE n = 0;
        bool            cast;
 
-
-       /* not if confused */
-       if (p_ptr->confused)
-       {
-               msg_print(_("混乱していて集中できない!", "You are too confused!"));
-               return;
-       }
+       if (cmd_limit_confused(p_ptr)) return;
 
        /* not if hullucinated */
        if (p_ptr->image)
@@ -601,14 +568,8 @@ void do_cmd_snipe(void)
        cast = cast_sniper_spell(n);
 
        if (!cast) return;
-#if 0
-       /* Take a turn */
-       p_ptr->energy_use = 100;
-#endif
-       /* Redraw mana */
        p_ptr->redraw |= (PR_HP | PR_MANA);
 
-       /* Window stuff */
        p_ptr->window |= (PW_PLAYER);
        p_ptr->window |= (PW_SPELL);
 }
@@ -619,7 +580,7 @@ void do_cmd_snipe(void)
  */
 void do_cmd_snipe_browse(void)
 {
-       int n = 0;
+       COMMAND_CODE n = 0;
        int j, line;
        char temp[62 * 4];