X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd2.c;h=cd434a8a014a554e9b92cefeb1b1c1ca5358b00f;hb=f5d7e7a38b4256114811b63e44dd04509f011dbd;hp=17a260ba4976e88243fa01b0db474eed00b0f746;hpb=a425f03fb90b6f9bc50ec63c060bad745e5b9aa0;p=hengband%2Fhengband.git diff --git a/src/cmd2.c b/src/cmd2.c index 17a260ba4..cd434a8a0 100644 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -12,8 +12,10 @@ #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 */