OSDN Git Service

[Refactor] #37353 PROJECT_* 定義を新規ファイル projection.h へ移動。 / Move PROJECT_* definition...
[hengband/hengband.git] / src / cmd2.c
index 17a260b..cd434a8 100644 (file)
 
 #include "angband.h"
 #include "chest.h"
+#include "floor.h"
 #include "melee.h"
 #include "object-hook.h"
+#include "projection.h"
 
 /*!
  * @brief フロア脱出時に出戻りが不可能だった場合に警告を加える処理
@@ -378,8 +380,6 @@ void do_cmd_search(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -740,6 +740,8 @@ void do_cmd_open(void)
 
        bool more = FALSE;
 
+       if (p_ptr->wild_mode) return;
+
        if (p_ptr->special_defense & KATA_MUSOU)
        {
                set_action(ACTION_NONE);
@@ -770,8 +772,6 @@ void do_cmd_open(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -898,6 +898,8 @@ void do_cmd_close(void)
 
        bool more = FALSE;
 
+       if (p_ptr->wild_mode) return;
+
        if (p_ptr->special_defense & KATA_MUSOU)
        {
                set_action(ACTION_NONE);
@@ -918,8 +920,6 @@ void do_cmd_close(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -1016,7 +1016,7 @@ static bool do_cmd_tunnel_aux(POSITION y, POSITION x)
        cave_type *c_ptr;
        feature_type *f_ptr, *mimic_f_ptr;
        int power;
-       cptr name;
+       concptr name;
        bool more = FALSE;
 
        /* Verify legality */
@@ -1159,8 +1159,6 @@ void do_cmd_tunnel(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -1410,7 +1408,7 @@ bool do_cmd_disarm_aux(POSITION y, POSITION x, DIRECTION dir)
        feature_type *f_ptr = &f_info[c_ptr->feat];
 
        /* Access trap name */
-       cptr name = (f_name + f_ptr->name);
+       concptr name = (f_name + f_ptr->name);
 
        /* Extract trap "power" */
        int power = f_ptr->power;
@@ -1479,16 +1477,17 @@ void do_cmd_disarm(void)
 {
        POSITION y, x;
        DIRECTION dir;
-       s16b o_idx;
+       OBJECT_IDX o_idx;
 
        bool more = FALSE;
 
+       if (p_ptr->wild_mode) return;
+
        if (p_ptr->special_defense & KATA_MUSOU)
        {
                set_action(ACTION_NONE);
        }
 
-
        /* Option: Pick a direction */
        if (easy_disarm)
        {
@@ -1514,8 +1513,6 @@ void do_cmd_disarm(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -1556,14 +1553,12 @@ void do_cmd_disarm(void)
                /* Disarm chest */
                else if (o_idx)
                {
-                       /* Disarm the chest */
                        more = do_cmd_disarm_chest(y, x, o_idx);
                }
 
                /* Disarm trap */
                else
                {
-                       /* Disarm the trap */
                        more = do_cmd_disarm_aux(y, x, dir);
                }
        }
@@ -1604,7 +1599,7 @@ static bool do_cmd_bash_aux(POSITION y, POSITION x, DIRECTION dir)
 
        bool            more = FALSE;
 
-       cptr name = f_name + f_info[get_feat_mimic(c_ptr)].name;
+       concptr name = f_name + f_info[get_feat_mimic(c_ptr)].name;
 
        p_ptr->energy_use = 100;
 
@@ -1683,12 +1678,11 @@ static bool do_cmd_bash_aux(POSITION y, POSITION x, DIRECTION dir)
  */
 void do_cmd_bash(void)
 {
-       int                     y, x, dir;
-
+       int     y, x, dir;
        cave_type       *c_ptr;
-
        bool            more = FALSE;
 
+       if (p_ptr->wild_mode) return;
 
        if (p_ptr->special_defense & KATA_MUSOU)
        {
@@ -1700,8 +1694,6 @@ void do_cmd_bash(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -1785,8 +1777,6 @@ void do_cmd_alter(void)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -1908,13 +1898,15 @@ void do_cmd_spike(void)
 {
        DIRECTION dir;
 
+       if (p_ptr->wild_mode) return;
+
        if (p_ptr->special_defense & KATA_MUSOU)
        {
                set_action(ACTION_NONE);
        }
 
        /* Get a "repeated" direction */
-       if (get_rep_dir(&dir,FALSE))
+       if (get_rep_dir(&dir, FALSE))
        {
                POSITION y, x;
                INVENTORY_IDX item;
@@ -1988,8 +1980,6 @@ void do_cmd_walk(bool pickup)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -2095,8 +2085,6 @@ void do_cmd_stay(bool pickup)
        {
                /* Set repeat count */
                command_rep = command_arg - 1;
-
-               /* Redraw the state */
                p_ptr->redraw |= (PR_STATE);
 
                /* Cancel the arg */
@@ -2131,7 +2119,7 @@ void do_cmd_rest(void)
        /* Prompt for time if needed */
        if (command_arg <= 0)
        {
-               cptr p = _("休憩 (0-9999, '*' で HP/MP全快, '&' で必要なだけ): ", 
+               concptr p = _("休憩 (0-9999, '*' で HP/MP全快, '&' で必要なだけ): ", 
                                   "Rest (0-9999, '*' for HP/SP, '&' as needed): ");
 
 
@@ -2189,13 +2177,11 @@ void do_cmd_rest(void)
        /* Save the rest code */
        resting = command_arg;
        p_ptr->action = ACTION_REST;
-
-       /* Recalculate bonuses */
        p_ptr->update |= (PU_BONUS);
+       update_creature(p_ptr);
 
-       /* Redraw the state */
        p_ptr->redraw |= (PR_STATE);
-       handle_stuff();
+       update_output();
 
        Term_fresh();
 }
@@ -2274,8 +2260,6 @@ static s16b tot_dam_aux_shot(object_type *o_ptr, int tdam, monster_type *m_ptr)
        monster_race *r_ptr = &r_info[m_ptr->r_idx];
 
        BIT_FLAGS flgs[TR_FLAG_SIZE];
-
-       /* Extract the flags */
        object_flags(o_ptr, flgs);
 
        /* Some "weapons" and "ammo" do extra damage */
@@ -2935,10 +2919,7 @@ void do_cmd_fire_aux(INVENTORY_IDX item, object_type *j_ptr)
 
                                        if (m_ptr->ml)
                                        {
-                                               /* Hack -- Track this monster race */
                                                if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
-
-                                               /* Hack -- Track this monster */
                                                health_track(c_mon_ptr->m_idx);
                                        }
                                }
@@ -3060,7 +3041,6 @@ void do_cmd_fire_aux(INVENTORY_IDX item, object_type *j_ptr)
                                                        m_ptr->fx = nx;
                                                        m_ptr->fy = ny;
 
-                                                       /* Update the monster (new location) */
                                                        update_monster(c_mon_ptr->m_idx, TRUE);
 
                                                        lite_spot(ny, nx);
@@ -3154,7 +3134,9 @@ void do_cmd_fire(void)
 {
        OBJECT_IDX item;
        object_type *j_ptr, *ammo_ptr;
-       cptr q, s;
+       concptr q, s;
+
+       if(p_ptr->wild_mode) return;
 
        is_fired = FALSE;       /* not fired yet */
 
@@ -3264,10 +3246,11 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
        int msec = delay_factor * delay_factor * delay_factor;
 
        BIT_FLAGS flgs[TR_FLAG_SIZE];
-       cptr q, s;
+       concptr q, s;
        bool come_back = FALSE;
        bool do_drop = TRUE;
 
+       if (p_ptr->wild_mode) return FALSE;
 
        if (p_ptr->special_defense & KATA_MUSOU)
        {
@@ -3277,6 +3260,7 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
        if (shuriken >= 0)
        {
                item = shuriken;
+               o_ptr = &inventory[item];
        }
        else if (boomerang)
        {
@@ -3292,8 +3276,16 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
                                return FALSE;
                        }
                }
-               else if (buki_motteruka(INVEN_LARM)) item = INVEN_LARM;
-               else item = INVEN_RARM;
+               else if (buki_motteruka(INVEN_LARM))
+               {
+                       item = INVEN_LARM;
+                       o_ptr = &inventory[item];
+               }
+               else
+               {
+                       item = INVEN_RARM;
+                       o_ptr = &inventory[item];
+               }
        }
        else
        {
@@ -3341,7 +3333,6 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
        /* Single object */
        q_ptr->number = 1;
 
-       /* Description */
        object_desc(o_name, q_ptr, OD_OMIT_PREFIX);
 
        if (p_ptr->mighty_throw) mult += 3;
@@ -3458,8 +3449,8 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
                /* The player can see the (on screen) missile */
                if (panel_contains(ny[cur_dis], nx[cur_dis]) && player_can_see_bold(ny[cur_dis], nx[cur_dis]))
                {
-                       char c = object_char(q_ptr);
-                       byte a = object_attr(q_ptr);
+                       SYMBOL_CODE c = object_char(q_ptr);
+                       TERM_COLOR a = object_attr(q_ptr);
 
                        /* Draw, Hilite, Fresh, Pause, Erase */
                        print_rel(c, a, ny[cur_dis], nx[cur_dis]);
@@ -3521,10 +3512,7 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
 
                                        if (m_ptr->ml)
                                        {
-                                               /* Hack -- Track this monster race */
                                                if (!p_ptr->image) monster_race_track(m_ptr->ap_r_idx);
-
-                                               /* Hack -- Track this monster */
                                                health_track(c_ptr->m_idx);
                                        }
                                }
@@ -3718,7 +3706,6 @@ bool do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
                        /* Wear the new stuff */
                        object_copy(o_ptr, q_ptr);
 
-                       /* Increase the weight */
                        p_ptr->total_weight += q_ptr->weight;
 
                        /* Increment the equip counter by hand */