X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd-usestaff.c;h=95dc6cc465e298991ca6038ea7906d4369b3ff15;hb=3b3632a5bd2408e59268422e059e3e00973b99eb;hp=a78de2d545105fc50210096913369948d35774ee;hpb=4ab537b0157f4328c102f328f297b78be0689975;p=hengband%2Fhengband.git diff --git a/src/cmd-usestaff.c b/src/cmd-usestaff.c index a78de2d54..95dc6cc46 100644 --- a/src/cmd-usestaff.c +++ b/src/cmd-usestaff.c @@ -1,9 +1,20 @@ #include "angband.h" -#include "projection.h" +#include "util.h" + +#include "player-race.h" #include "spells-summon.h" #include "avatar.h" #include "player-status.h" +#include "player-effects.h" +#include "player-class.h" +#include "spells.h" #include "spells-status.h" +#include "spells-floor.h" +#include "object-hook.h" +#include "cmd-basic.h" +#include "floor.h" +#include "objectkind.h" +#include "view-mainwindow.h" @@ -53,7 +64,7 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo const int times = randint1(powerful ? 8 : 4); for (k = 0; k < times; k++) { - if (summon_specific(0, p_ptr->y, p_ptr->x, dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET), '\0')) + if (summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, 0, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET))) { ident = TRUE; } @@ -166,7 +177,7 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo case SV_STAFF_THE_MAGI: { - if (do_res_stat(A_INT)) ident = TRUE; + if (do_res_stat(p_ptr, A_INT)) ident = TRUE; ident |= restore_mana(FALSE); if (set_shero(0, TRUE)) ident = TRUE; break; @@ -222,7 +233,7 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo case SV_STAFF_EARTHQUAKES: { - if (earthquake(p_ptr->y, p_ptr->x, (powerful ? 15 : 10))) + if (earthquake(p_ptr->y, p_ptr->x, (powerful ? 15 : 10), 0)) ident = TRUE; else msg_print(_("ダンジョンが揺れた。", "The dungeon trembles.")); @@ -251,8 +262,8 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo case SV_STAFF_NOTHING: { msg_print(_("何も起らなかった。", "Nothing happen.")); - if (prace_is_(RACE_SKELETON) || prace_is_(RACE_GOLEM) || - prace_is_(RACE_ZOMBIE) || prace_is_(RACE_SPECTRE)) + if (PRACE_IS_(p_ptr, RACE_SKELETON) || PRACE_IS_(p_ptr, RACE_GOLEM) || + PRACE_IS_(p_ptr, RACE_ZOMBIE) || PRACE_IS_(p_ptr, RACE_SPECTRE)) msg_print(_("もったいない事をしたような気がする。食べ物は大切にしなくては。", "What a waste. It's your food!")); break; } @@ -269,7 +280,7 @@ int staff_effect(OBJECT_SUBTYPE_VALUE sval, bool *use_charge, bool powerful, boo * One charge of one staff disappears. * Hack -- staffs of identify can be "cancelled". */ -void do_cmd_use_staff_aux(INVENTORY_IDX item) +void exe_use_staff(INVENTORY_IDX item) { int ident, chance, lev; object_type *o_ptr; @@ -282,13 +293,13 @@ void do_cmd_use_staff_aux(INVENTORY_IDX item) /* Get the item (in the pack) */ if (item >= 0) { - o_ptr = &inventory[item]; + o_ptr = &p_ptr->inventory_list[item]; } /* Get the item (on the floor) */ else { - o_ptr = &o_list[0 - item]; + o_ptr = ¤t_floor_ptr->o_list[0 - item]; } @@ -300,9 +311,8 @@ void do_cmd_use_staff_aux(INVENTORY_IDX item) } - take_turn(p_ptr, 100);; + take_turn(p_ptr, 100); - /* Extract the item level */ lev = k_info[o_ptr->k_idx].level; if (lev > 50) lev = 50 + (lev - 50) / 2; @@ -383,8 +393,6 @@ void do_cmd_use_staff_aux(INVENTORY_IDX item) object_type forge; object_type *q_ptr; q_ptr = &forge; - - /* Obtain a local object */ object_copy(q_ptr, o_ptr); /* Modify quantity */ @@ -435,13 +443,9 @@ void do_cmd_use_staff(void) set_action(ACTION_NONE); } - /* Restrict choices to wands */ - item_tester_tval = TV_STAFF; - q = _("どの杖を使いますか? ", "Use which staff? "); s = _("使える杖がない。", "You have no staff to use."); + if (!choose_object(&item, q, s, (USE_INVEN | USE_FLOOR), TV_STAFF)) return; - if (!choose_object(&item, q, s, (USE_INVEN | USE_FLOOR))) return; - - do_cmd_use_staff_aux(item); + exe_use_staff(item); }