X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcmd-activate.c;h=0dc1c838081dda8f11f4def07c429aa39a830cd4;hb=7bdabc50285d97192a7cd286ebf825c2329b9235;hp=4ab06b7887aaadf169f46ca9978871ab9550e3a1;hpb=3f5ead8a475d7459e387297f2f122ca035d48aba;p=hengband%2Fhengband.git diff --git a/src/cmd-activate.c b/src/cmd-activate.c index 4ab06b788..0dc1c8380 100644 --- a/src/cmd-activate.c +++ b/src/cmd-activate.c @@ -10,6 +10,12 @@ #include "cmd-activate.h" #include "object-hook.h" #include "spells-summon.h" +#include "sort.h" +#include "projection.h" +#include "artifact.h" +#include "avatar.h" +#include "spells-status.h" +#include "realm-hex.h" /*! * @brief ペット入りモンスターボールをソートするための比較関数 @@ -182,12 +188,12 @@ void do_cmd_activate_aux(INVENTORY_IDX item) { IDX pet_ctr, i; - IDX *who; + MONSTER_IDX *who; int max_pet = 0; u16b dummy_why; /* Allocate the "who" array */ - C_MAKE(who, max_m_idx, IDX); + C_MAKE(who, max_m_idx, MONSTER_IDX); /* Process the monsters (backwards) */ for (pet_ctr = m_max - 1; pet_ctr >= 1; pet_ctr--) @@ -236,7 +242,7 @@ void do_cmd_activate_aux(INVENTORY_IDX item) o_ptr->xtra5 = (XTRA16)cap_maxhp; if (cap_nickname) { - cptr t; + concptr t; char *s; char buf[80] = ""; @@ -288,7 +294,7 @@ void do_cmd_activate_aux(INVENTORY_IDX item) if (o_ptr->inscription) { char buf[80]; - cptr t; + concptr t; #ifndef JP bool quote = FALSE; #endif @@ -364,21 +370,22 @@ void do_cmd_activate_aux(INVENTORY_IDX item) void do_cmd_activate(void) { OBJECT_IDX item; - cptr q, s; + concptr q, s; + + if (p_ptr->wild_mode) return; + if (cmd_limit_arena(p_ptr)) return; if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN)) { set_action(ACTION_NONE); } - item_tester_no_ryoute = TRUE; - /* Prepare the hook */ item_tester_hook = item_tester_hook_activate; q = _("どのアイテムを始動させますか? ", "Activate which item? "); s = _("始動できるアイテムを装備していない。", "You have nothing to activate."); - if (!get_item(&item, q, s, (USE_EQUIP))) return; + if (!choose_object(&item, q, s, (USE_EQUIP | IGNORE_BOTHHAND_SLOT))) return; /* Activate the item */ do_cmd_activate_aux(item); @@ -394,7 +401,7 @@ static bool activate_dragon_breath(object_type *o_ptr) { BIT_FLAGS flgs[TR_FLAG_SIZE]; /* for resistance flags */ int type[20]; - cptr name[20]; + concptr name[20]; int i, t, n = 0; DIRECTION dir; @@ -436,7 +443,7 @@ bool activate_artifact(object_type *o_ptr) PLAYER_LEVEL plev = p_ptr->lev; int k, dummy = 0; DIRECTION dir; - cptr name = k_name + k_info[o_ptr->k_idx].name; + concptr name = k_name + k_info[o_ptr->k_idx].name; const activation_type* const act_ptr = find_activation_info(o_ptr); /* Paranoia */ @@ -927,14 +934,14 @@ bool activate_artifact(object_type *o_ptr) case ACT_SUMMON_ANIMAL: { - (void)summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET)); + (void)summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'); break; } case ACT_SUMMON_PHANTOM: { msg_print(_("幻霊を召喚した。", "You summon a phantasmal servant.")); - (void)summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET)); + (void)summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_PHANTOM, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'); break; } @@ -947,7 +954,7 @@ bool activate_artifact(object_type *o_ptr) if (pet) mode |= PM_FORCE_PET; else mode |= PM_NO_PET; - if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, ((plev * 3) / 2), SUMMON_ELEMENTAL, mode)) + if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, ((plev * 3) / 2), SUMMON_ELEMENTAL, mode, '\0')) { msg_print(_("エレメンタルが現れた...", "An elemental materializes...")); if (pet) @@ -977,7 +984,7 @@ bool activate_artifact(object_type *o_ptr) if (pet) mode |= PM_FORCE_PET; else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET); - if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, ((plev * 3) / 2), type, mode)) + if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, ((plev * 3) / 2), type, mode, '\0')) { msg_print(_("冷たい風があなたの周りに吹き始めた。それは腐敗臭を運んでいる...", "Cold winds begin to blow around you, carrying with them the stench of decay...")); @@ -999,7 +1006,7 @@ bool activate_artifact(object_type *o_ptr) if (pet) mode |= PM_FORCE_PET; else mode |= PM_NO_PET; - if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, ((p_ptr->lev * 3) / 2), SUMMON_HOUND, mode)) + if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, ((p_ptr->lev * 3) / 2), SUMMON_HOUND, mode, '\0')) { if (pet) @@ -1016,7 +1023,7 @@ bool activate_artifact(object_type *o_ptr) case ACT_SUMMON_DAWN: { msg_print(_("暁の師団を召喚した。", "You summon the Legion of the Dawn.")); - (void)summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET)); + (void)summon_specific(-1, p_ptr->y, p_ptr->x, dun_level, SUMMON_DAWN, (PM_ALLOW_GROUP | PM_FORCE_PET), '\0'); break; } @@ -1354,7 +1361,7 @@ bool activate_artifact(object_type *o_ptr) case ACT_RECALL: { msg_print(_("やわらかな白色に輝いている...", "It glows soft white...")); - if (!word_of_recall()) return FALSE; + if (!recall_player(p_ptr, randint0(21) + 15)) return FALSE; break; } @@ -1374,7 +1381,7 @@ bool activate_artifact(object_type *o_ptr) if (get_check(_("帰還の力を使いますか?", "Activate recall? "))) { - (void)word_of_recall(); + (void)recall_player(p_ptr, randint0(21) + 15); } break; @@ -1485,25 +1492,19 @@ bool activate_artifact(object_type *o_ptr) msg_print(_("石を制御できない!", "You are too weak to control the stone!")); /* Hack -- Bypass free action */ - (void)set_paralyzed(p_ptr->paralyzed + - randint1(5 * oops + 1)); + (void)set_paralyzed(p_ptr->paralyzed + randint1(5 * oops + 1)); /* Confusing. */ - (void)set_confused(p_ptr->confused + - randint1(5 * oops + 1)); + (void)set_confused(p_ptr->confused + randint1(5 * oops + 1)); } - - /* Redraw mana */ p_ptr->redraw |= (PR_MANA); } take_hit(DAMAGE_LOSELIFE, damroll(1, 12), _("危険な秘密", "perilous secrets"), -1); /* Confusing. */ - if (one_in_(5)) (void)set_confused(p_ptr->confused + - randint1(10)); + if (one_in_(5)) (void)set_confused(p_ptr->confused + randint1(10)); /* Exercise a little care... */ - if (one_in_(20)) - take_hit(DAMAGE_LOSELIFE, damroll(4, 10), _("危険な秘密", "perilous secrets"), -1); + if (one_in_(20)) take_hit(DAMAGE_LOSELIFE, damroll(4, 10), _("危険な秘密", "perilous secrets"), -1); break; } @@ -1552,7 +1553,7 @@ bool activate_artifact(object_type *o_ptr) INVENTORY_IDX inv; int t; OBJECT_IDX o_idx; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; object_type forge; /* Cast off activated item */ @@ -1640,7 +1641,7 @@ bool activate_artifact(object_type *o_ptr) } else if (cave[y][x].m_idx) { - char m_name[80]; + GAME_TEXT m_name[MAX_NLEN]; monster_desc(m_name, &m_list[cave[y][x].m_idx], 0); msg_format(_("%sが邪魔だ!", "%^s is stand in your way."), m_name); p_ptr->energy_use = 0; @@ -1655,7 +1656,7 @@ bool activate_artifact(object_type *o_ptr) { int count = 0, i; monster_type *m_ptr; - cptr kakusan = ""; + concptr kakusan = ""; if (summon_named_creature(0, p_ptr->y, p_ptr->x, MON_SUKE, PM_FORCE_PET)) { @@ -1838,7 +1839,7 @@ void get_bloody_moon_flags(object_type *o_ptr) for (i = 0; i < 2; i++) { int tmp = randint0(11); - if (tmp < 6) add_flag(o_ptr->art_flags, TR_STR + tmp); + if (tmp < A_MAX) add_flag(o_ptr->art_flags, TR_STR + tmp); else add_flag(o_ptr->art_flags, TR_STEALTH + tmp - 6); } }