X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fobject2.c;h=690c8da5d3d3928d4e52042b3b7771b3b79763bd;hb=b15ecfa8769ac4094409e6ab2a0063451ec8ef56;hp=00ad13f8a27f6406a33345574673743f603662e3;hpb=eabbe110bbd707289f6d9228c5fbd74d6ba65d49;p=hengband%2Fhengband.git diff --git a/src/object2.c b/src/object2.c index 00ad13f8a..690c8da5d 100644 --- a/src/object2.c +++ b/src/object2.c @@ -14,11 +14,13 @@ #include "angband.h" #include "object-hook.h" #include "object-curse.h" +#include "artifact.h" +#include "player-status.h" static void one_sustain(object_type *o_ptr); -static cptr const kaji_tips[5] = +static concptr const kaji_tips[5] = { #ifdef JP "現在持っているエッセンスの一覧を表示する。", @@ -64,9 +66,7 @@ void excise_object_idx(OBJECT_IDX o_idx) object_type *j_ptr; OBJECT_IDX this_o_idx, next_o_idx = 0; - - s16b prev_o_idx = 0; - + OBJECT_IDX prev_o_idx = 0; /* Object */ j_ptr = &o_list[o_idx]; @@ -83,8 +83,6 @@ void excise_object_idx(OBJECT_IDX o_idx) for (this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Acquire next object */ @@ -130,15 +128,12 @@ void excise_object_idx(OBJECT_IDX o_idx) POSITION y = j_ptr->iy; POSITION x = j_ptr->ix; - /* Grid */ c_ptr = &cave[y][x]; /* Scan all objects in the grid */ for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Acquire next object */ @@ -206,8 +201,6 @@ void delete_object_idx(OBJECT_IDX o_idx) /* Visual update */ lite_spot(y, x); } - - /* Wipe the object */ object_wipe(j_ptr); /* Count objects */ @@ -230,21 +223,16 @@ void delete_object(POSITION y, POSITION x) /* Refuse "illegal" locations */ if (!in_bounds(y, x)) return; - /* Grid */ c_ptr = &cave[y][x]; /* Scan all objects in the grid */ for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Acquire next object */ next_o_idx = o_ptr->next_o_idx; - - /* Wipe the object */ object_wipe(o_ptr); /* Count objects */ @@ -266,20 +254,18 @@ void delete_object(POSITION y, POSITION x) * @param i2 整理したい配列の終点 * @return なし */ -static void compact_objects_aux(IDX i1, IDX i2) +static void compact_objects_aux(OBJECT_IDX i1, OBJECT_IDX i2) { - IDX i; + OBJECT_IDX i; cave_type *c_ptr; object_type *o_ptr; /* Do nothing */ if (i1 == i2) return; - /* Repair objects */ for (i = 1; i < o_max; i++) { - /* Acquire object */ o_ptr = &o_list[i]; /* Skip "dead" objects */ @@ -292,12 +278,8 @@ static void compact_objects_aux(IDX i1, IDX i2) o_ptr->next_o_idx = i2; } } - - - /* Acquire object */ o_ptr = &o_list[i1]; - /* Monster */ if (o_ptr->held_m_idx) { @@ -334,7 +316,6 @@ static void compact_objects_aux(IDX i1, IDX i2) } } - /* Structure copy */ o_list[i2] = o_list[i1]; @@ -367,15 +348,11 @@ void compact_objects(int size) int cur_lev, cur_dis, chance; object_type *o_ptr; - /* Compact */ if (size) { msg_print(_("アイテム情報を圧縮しています...", "Compacting objects...")); - - /* Redraw map */ p_ptr->redraw |= (PR_MAP); - p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); } @@ -408,7 +385,6 @@ void compact_objects(int size) /* Acquire monster */ m_ptr = &m_list[o_ptr->held_m_idx]; - /* Get the location */ y = m_ptr->fy; x = m_ptr->fx; @@ -419,7 +395,6 @@ void compact_objects(int size) /* Dungeon */ else { - /* Get the location */ y = o_ptr->iy; x = o_ptr->ix; } @@ -437,7 +412,6 @@ void compact_objects(int size) /* Apply the saving throw */ if (randint0(100) < chance) continue; - /* Delete the object */ delete_object_idx(i); /* Count it */ @@ -525,8 +499,6 @@ void wipe_o_list(void) /* Hack -- see above */ c_ptr->o_idx = 0; } - - /* Wipe the object */ object_wipe(o_ptr); } @@ -571,8 +543,6 @@ OBJECT_IDX o_pop(void) for (i = 1; i < o_max; i++) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[i]; /* Skip live objects */ @@ -763,8 +733,6 @@ OBJECT_IDX get_obj_num(DEPTH level) if (table[i].level < table[j].level) i = j; } - - /* Result */ return (table[i].index); } @@ -820,7 +788,7 @@ void object_aware(object_type *o_ptr) { object_type forge; object_type *q_ptr; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; q_ptr = &forge; object_copy(q_ptr, o_ptr); @@ -1539,7 +1507,7 @@ bool can_player_destroy_object(object_type *o_ptr) o_ptr->ident |= (IDENT_SENSE); /* Combine the pack */ - p_ptr->notice |= (PN_COMBINE); + p_ptr->update |= (PU_COMBINE); p_ptr->window |= (PW_INVEN | PW_EQUIP); @@ -1929,11 +1897,11 @@ void object_absorb(object_type *o_ptr, object_type *j_ptr) * @param sval 検索したいベースアイテムのsval * @return なし */ -IDX lookup_kind(OBJECT_TYPE_VALUE tval, OBJECT_SUBTYPE_VALUE sval) +KIND_OBJECT_IDX lookup_kind(OBJECT_TYPE_VALUE tval, OBJECT_SUBTYPE_VALUE sval) { - IDX k; + KIND_OBJECT_IDX k; int num = 0; - IDX bk = 0; + KIND_OBJECT_IDX bk = 0; /* Look for it */ for (k = 1; k < max_k_idx; k++) @@ -2134,8 +2102,6 @@ int m_bonus(int max, DEPTH level) /* Enforce the maximum value */ if (value > max) return (max); - - /* Result */ return (value); } @@ -2147,15 +2113,13 @@ int m_bonus(int max, DEPTH level) */ static void object_mention(object_type *o_ptr) { - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; object_aware(o_ptr); object_known(o_ptr); /* Mark the item as fully known */ o_ptr->ident |= (IDENT_MENTAL); - - /* Description */ object_desc(o_name, o_ptr, 0); msg_format_wizard(CHEAT_OBJECT, _("%sを生成しました。", "%s was generated."), o_name); } @@ -2242,8 +2206,7 @@ static bool make_artifact_special(object_type *o_ptr) */ static bool make_artifact(object_type *o_ptr) { - IDX i; - + ARTIFACT_IDX i; /* No artifacts in the town */ if (!dun_level) return (FALSE); @@ -3658,7 +3621,6 @@ static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power) break; } } - /* Uncurse it */ o_ptr->curse_flags = 0L; } else if ((power == -2) && one_in_(2)) @@ -3941,7 +3903,6 @@ static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power) } } } - /* Uncurse it */ o_ptr->curse_flags = 0L; } else if ((power == -2) && one_in_(2)) @@ -4005,7 +3966,6 @@ static bool item_monster_okay(MONRACE_IDX r_idx) if (r_ptr->flags1 & RF1_FORCE_DEPTH) return (FALSE); if (r_ptr->flags7 & RF7_UNIQUE2) return (FALSE); - /* Okay */ return (TRUE); } @@ -4468,8 +4428,6 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode) return; } - - /* Apply magic */ switch (o_ptr->tval) { case TV_DIGGING: @@ -4925,11 +4883,7 @@ void place_object(POSITION y, POSITION x, BIT_FLAGS mode) /* Avoid stacking on other objects */ if (c_ptr->o_idx) return; - - /* Get local object */ q_ptr = &forge; - - /* Wipe the object */ object_wipe(q_ptr); /* Make an object (if possible) */ @@ -4943,8 +4897,6 @@ void place_object(POSITION y, POSITION x, BIT_FLAGS mode) if (o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[o_idx]; /* Structure Copy */ @@ -4959,10 +4911,8 @@ void place_object(POSITION y, POSITION x, BIT_FLAGS mode) /* Place the object */ c_ptr->o_idx = o_idx; - /* Notice */ note_spot(y, x); - /* Redraw */ lite_spot(y, x); } else @@ -5047,11 +4997,7 @@ void place_gold(POSITION y, POSITION x) /* Avoid stacking on other objects */ if (c_ptr->o_idx) return; - - /* Get local object */ q_ptr = &forge; - - /* Wipe the object */ object_wipe(q_ptr); /* Make some gold */ @@ -5064,8 +5010,6 @@ void place_gold(POSITION y, POSITION x) if (o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[o_idx]; /* Copy the object */ @@ -5081,10 +5025,8 @@ void place_gold(POSITION y, POSITION x) /* Place the object */ c_ptr->o_idx = o_idx; - /* Notice */ note_spot(y, x); - /* Redraw */ lite_spot(y, x); } } @@ -5126,7 +5068,7 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION cave_type *c_ptr; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; bool flag = FALSE; bool done = FALSE; @@ -5202,8 +5144,6 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Acquire next object */ @@ -5241,7 +5181,6 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION by = ty; bx = tx; - /* Okay */ flag = TRUE; } } @@ -5282,7 +5221,6 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION /* Require floor space */ if (!cave_drop_bold(by, bx)) continue; - /* Okay */ flag = TRUE; } @@ -5351,15 +5289,12 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION } - /* Grid */ c_ptr = &cave[by][bx]; /* Scan objects in that grid for combination */ for (this_o_idx = c_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) { object_type *o_ptr; - - /* Acquire object */ o_ptr = &o_list[this_o_idx]; /* Acquire next object */ @@ -5368,7 +5303,6 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION /* Check for combination */ if (object_similar(o_ptr, j_ptr)) { - /* Combine the items */ object_absorb(o_ptr, j_ptr); /* Success */ @@ -5378,7 +5312,6 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION } } - /* Get new object */ if (!done) o_idx = o_pop(); /* Failure */ @@ -5387,11 +5320,9 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION #ifdef JP msg_format("%sは消えた。", o_name); #else - msg_format("The %s disappear%s.", - o_name, (plural ? "" : "s")); + msg_format("The %s disappear%s.", o_name, (plural ? "" : "s")); #endif - /* Debug */ if (p_ptr->wizard) msg_print(_("(アイテムが多過ぎる)", "(too many objects)")); @@ -5431,12 +5362,8 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION done = TRUE; } - /* Note the spot */ note_spot(by, bx); - - /* Draw the spot */ lite_spot(by, bx); - sound(SOUND_DROP); /* Mega-Hack -- no message if "dropped" by player */ @@ -5446,8 +5373,6 @@ OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION msg_print(_("何かが足下に転がってきた。", "You feel something roll beneath your feet.")); } - - /* Result */ return (o_idx); } @@ -5472,10 +5397,7 @@ void acquirement(POSITION y1, POSITION x1, int num, bool great, bool special, bo /* Acquirement */ while (num--) { - /* Get local object */ i_ptr = &object_type_body; - - /* Wipe the object */ object_wipe(i_ptr); /* Make a good (or great) object (if possible) */ @@ -5562,14 +5484,8 @@ void amusement(POSITION y1, POSITION x1, int num, bool known) r -= amuse_info[i].prob; if (r <= 0) break; } - - /* Get local object */ i_ptr = &object_type_body; - - /* Wipe the object */ object_wipe(i_ptr); - - /* Wipe the object */ k_idx = lookup_kind(amuse_info[i].tval, amuse_info[i].sval); /* Paranoia - reroll if nothing */ @@ -5652,14 +5568,12 @@ void inven_item_charges(INVENTORY_IDX item) /* Multiple charges */ if (o_ptr->pval != 1) { - /* Print a message */ msg_format("You have %d charges remaining.", o_ptr->pval); } /* Single charge */ else { - /* Print a message */ msg_format("You have %d charge remaining.", o_ptr->pval); } #endif @@ -5675,12 +5589,10 @@ void inven_item_charges(INVENTORY_IDX item) void inven_item_describe(INVENTORY_IDX item) { object_type *o_ptr = &inventory[item]; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; - /* Get a description */ object_desc(o_name, o_ptr, 0); - /* Print a message */ #ifdef JP /* "no more" の場合はこちらで表示する */ if (o_ptr->number <= 0) @@ -5700,13 +5612,13 @@ void inven_item_describe(INVENTORY_IDX item) } /*! - * @brief アイテムの残り所持数メッセージを表示する / + * @brief アイテムを増減させ残り所持数メッセージを表示する / * Increase the "number" of an item in the inventory * @param item 所持数を増やしたいプレイヤーのアイテム所持スロット * @param num 増やしたい量 * @return なし */ -void inven_item_increase(INVENTORY_IDX item, int num) +void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num) { object_type *o_ptr = &inventory[item]; @@ -5718,7 +5630,7 @@ void inven_item_increase(INVENTORY_IDX item, int num) else if (num < 0) num = 0; /* Un-apply */ - num -= (ITEM_NUMBER)o_ptr->number; + num -= o_ptr->number; /* Change the number and weight */ if (num) @@ -5728,15 +5640,13 @@ void inven_item_increase(INVENTORY_IDX item, int num) /* Add the weight */ p_ptr->total_weight += (num * o_ptr->weight); - - /* Recalculate bonuses */ p_ptr->update |= (PU_BONUS); /* Recalculate mana XXX */ p_ptr->update |= (PU_MANA); /* Combine the pack */ - p_ptr->notice |= (PN_COMBINE); + p_ptr->update |= (PU_COMBINE); p_ptr->window |= (PW_INVEN | PW_EQUIP); @@ -5745,7 +5655,7 @@ void inven_item_increase(INVENTORY_IDX item, int num) { if ((item == INVEN_RARM) || (item == INVEN_LARM)) { - if (!buki_motteruka(INVEN_RARM + INVEN_LARM - item)) + if (!has_melee_weapon(INVEN_RARM + INVEN_LARM - item)) { /* Clear all temporary elemental brands */ set_ele_attack(0, 0); @@ -5800,8 +5710,6 @@ void inven_item_optimize(INVENTORY_IDX item) /* Erase the empty slot */ object_wipe(&inventory[item]); - - /* Recalculate bonuses */ p_ptr->update |= (PU_BONUS); /* Recalculate torch */ @@ -5845,14 +5753,12 @@ void floor_item_charges(INVENTORY_IDX item) /* Multiple charges */ if (o_ptr->pval != 1) { - /* Print a message */ msg_format("There are %d charges remaining.", o_ptr->pval); } /* Single charge */ else { - /* Print a message */ msg_format("There is %d charge remaining.", o_ptr->pval); } #endif @@ -5868,12 +5774,10 @@ void floor_item_charges(INVENTORY_IDX item) void floor_item_describe(INVENTORY_IDX item) { object_type *o_ptr = &o_list[item]; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; - /* Get a description */ object_desc(o_name, o_ptr, 0); - /* Print a message */ #ifdef JP /* "no more" の場合はこちらで表示を分ける */ if (o_ptr->number <= 0) @@ -5898,7 +5802,7 @@ void floor_item_describe(INVENTORY_IDX item) * @param num 増やしたいアイテムの数 * @return なし */ -void floor_item_increase(INVENTORY_IDX item, int num) +void floor_item_increase(INVENTORY_IDX item, ITEM_NUMBER num) { object_type *o_ptr = &o_list[item]; @@ -5910,10 +5814,10 @@ void floor_item_increase(INVENTORY_IDX item, int num) else if (num < 0) num = 0; /* Un-apply */ - num -= (int)o_ptr->number; + num -= o_ptr->number; /* Change the number */ - o_ptr->number += (ITEM_NUMBER)num; + o_ptr->number += num; } @@ -5933,7 +5837,6 @@ void floor_item_optimize(INVENTORY_IDX item) /* Only optimize empty items */ if (o_ptr->number) return; - /* Delete the object */ delete_object_idx(item); } @@ -5963,7 +5866,6 @@ bool inven_carry_okay(object_type *o_ptr) if (object_similar(j_ptr, o_ptr)) return (TRUE); } - /* Nope */ return (FALSE); } @@ -6098,15 +6000,10 @@ s16b inven_carry(object_type *o_ptr) /* Check if the two items can be combined */ if (object_similar(j_ptr, o_ptr)) { - /* Combine the items */ object_absorb(j_ptr, o_ptr); - /* Increase the weight */ p_ptr->total_weight += (o_ptr->number * o_ptr->weight); - - /* Recalculate bonuses */ p_ptr->update |= (PU_BONUS); - p_ptr->window |= (PW_INVEN); /* Success */ @@ -6176,18 +6073,11 @@ s16b inven_carry(object_type *o_ptr) /* Player touches it, and no longer marked */ j_ptr->marked = OM_TOUCHED; - /* Increase the weight */ p_ptr->total_weight += (j_ptr->number * j_ptr->weight); /* Count the items */ inven_cnt++; - - /* Recalculate bonuses */ - p_ptr->update |= (PU_BONUS); - - /* Combine and Reorder pack */ - p_ptr->notice |= (PN_COMBINE | PN_REORDER); - + p_ptr->update |= (PU_BONUS | PU_COMBINE | PU_REORDER); p_ptr->window |= (PW_INVEN); /* Return the slot */ @@ -6216,9 +6106,9 @@ INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt) object_type *o_ptr; - cptr act; + concptr act; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; /* Get the item to take off */ @@ -6229,8 +6119,6 @@ INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt) /* Verify */ if (amt > o_ptr->number) amt = o_ptr->number; - - /* Get local object */ q_ptr = &forge; /* Obtain a local object */ @@ -6239,7 +6127,6 @@ INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt) /* Modify quantity */ q_ptr->number = amt; - /* Describe the object */ object_desc(o_name, q_ptr, 0); /* Took off weapon */ @@ -6301,8 +6188,7 @@ void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt) object_type *q_ptr; object_type *o_ptr; - char o_name[MAX_NLEN]; - + GAME_TEXT o_name[MAX_NLEN]; /* Access original object */ o_ptr = &inventory[item]; @@ -6313,7 +6199,6 @@ void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt) /* Not too many */ if (amt > o_ptr->number) amt = o_ptr->number; - /* Take off equipment */ if (item >= INVEN_RARM) { @@ -6324,8 +6209,6 @@ void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt) o_ptr = &inventory[item]; } - - /* Get local object */ q_ptr = &forge; /* Obtain local object */ @@ -6362,7 +6245,7 @@ void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt) void combine_pack(void) { int i, j, k; - object_type *o_ptr; + object_type *o_ptr; object_type *j_ptr; bool flag = FALSE, combined; @@ -6373,7 +6256,6 @@ void combine_pack(void) /* Combine the pack (backwards) */ for (i = INVEN_PACK; i > 0; i--) { - /* Get the item */ o_ptr = &inventory[i]; /* Skip empty items */ @@ -6384,7 +6266,6 @@ void combine_pack(void) { int max_num; - /* Get the item */ j_ptr = &inventory[j]; /* Skip empty items */ @@ -6474,7 +6355,7 @@ void reorder_pack(void) s32b o_value; object_type forge; object_type *q_ptr; - object_type *o_ptr; + object_type *o_ptr; bool flag = FALSE; @@ -6484,7 +6365,6 @@ void reorder_pack(void) /* Mega-Hack -- allow "proper" over-flow */ if ((i == INVEN_PACK) && (inven_cnt == INVEN_PACK)) break; - /* Get the item */ o_ptr = &inventory[i]; /* Skip empty slots */ @@ -6504,8 +6384,6 @@ void reorder_pack(void) /* Take note */ flag = TRUE; - - /* Get local object */ q_ptr = &forge; /* Save a copy of the moving item */ @@ -6544,7 +6422,7 @@ void display_koff(KIND_OBJECT_IDX k_idx) int sval; REALM_IDX use_realm; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; /* Erase the window */ @@ -6556,14 +6434,10 @@ void display_koff(KIND_OBJECT_IDX k_idx) /* No info */ if (!k_idx) return; - - /* Get local object */ q_ptr = &forge; /* Prepare the object */ object_prep(q_ptr, k_idx); - - /* Describe */ object_desc(o_name, q_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY | OD_STORE)); /* Mention the object name */ @@ -6989,7 +6863,7 @@ bool process_warning(POSITION xx, POSITION yy) { POSITION mx, my; cave_type *c_ptr; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; #define WARNING_AWARE_RANGE 12 int dam_max = 0; @@ -7097,7 +6971,7 @@ bool process_warning(POSITION xx, POSITION yy) strcpy(o_name, _("体", "body")); /* Warning ability without item */ msg_format(_("%sが鋭く震えた!", "Your %s pulsates sharply!"), o_name); - disturb(0, 1); + disturb(FALSE, TRUE); return get_check(_("本当にこのまま進むか?", "Really want to go ahead? ")); } } @@ -7114,7 +6988,7 @@ bool process_warning(POSITION xx, POSITION yy) else strcpy(o_name, _("体", "body")); /* Warning ability without item */ msg_format(_("%sが鋭く震えた!", "Your %s pulsates sharply!"), o_name); - disturb(0, 1); + disturb(FALSE, TRUE); return get_check(_("本当にこのまま進むか?", "Really want to go ahead? ")); } @@ -7126,7 +7000,7 @@ bool process_warning(POSITION xx, POSITION yy) */ typedef struct { int add; /* TR flag number or special essence id */ - cptr add_name; /* Name of this ability */ + concptr add_name; /* Name of this ability */ ESSENCE_IDX type; /* Menu number */ int essence; /* Index for carrying essences */ int value; /* Needed value to add this ability */ @@ -7365,7 +7239,7 @@ static essence_type essence_info[] = * エッセンス名テーブル / Essense names for Weapon smith */ #ifdef JP -cptr essence_name[] = +concptr essence_name[] = { "腕力", "知能", @@ -7468,7 +7342,7 @@ cptr essence_name[] = #else -cptr essence_name[] = +concptr essence_name[] = { "strength", "intelligen.", @@ -7612,7 +7486,7 @@ static void drain_essence(void) TIME_EFFECT old_timeout; BIT_FLAGS old_flgs[TR_FLAG_SIZE], new_flgs[TR_FLAG_SIZE]; object_type *o_ptr; - cptr q, s; + concptr q, s; POSITION iy, ix; byte_hack marked; ITEM_NUMBER number; @@ -7623,29 +7497,16 @@ static void drain_essence(void) drain_value[i] = 0; item_tester_hook = object_is_weapon_armour_ammo; - item_tester_no_ryoute = TRUE; - /* Get an item */ q = _("どのアイテムから抽出しますか?", "Extract from which item? "); s = _("抽出できるアイテムがありません。", "You have nothing you can extract from."); - if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; - - /* Get the item (in the pack) */ - if (item >= 0) - { - o_ptr = &inventory[item]; - } - - /* Get the item (on the floor) */ - else - { - o_ptr = &o_list[0 - item]; - } + o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT)); + if (!o_ptr) return; if (object_is_known(o_ptr) && !object_is_nameless(o_ptr)) { - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY)); if (!get_check(format(_("本当に%sから抽出してよろしいですか?", "Really extract from %s? "), o_name))) return; } @@ -7835,7 +7696,7 @@ static void drain_essence(void) autopick_alter_item(item, TRUE); /* Combine the pack */ - p_ptr->notice |= (PN_COMBINE | PN_REORDER); + p_ptr->update |= (PU_COMBINE | PU_REORDER); p_ptr->window |= (PW_INVEN); } @@ -7851,7 +7712,7 @@ static COMMAND_CODE choose_essence(void) COMMAND_CODE menu_line = (use_menu ? 1 : 0); #ifdef JP - cptr menu_name[] = { + concptr menu_name[] = { "武器属性", "耐性", "能力", @@ -7861,7 +7722,7 @@ static COMMAND_CODE choose_essence(void) "その他" }; #else - cptr menu_name[] = { + concptr menu_name[] = { "Brand weapon", "Resistance", "Ability", @@ -7873,12 +7734,9 @@ static COMMAND_CODE choose_essence(void) #endif const COMMAND_CODE mode_max = 7; -#ifdef ALLOW_REPEAT if (repeat_pull(&mode) && 1 <= mode && mode <= mode_max) return mode; mode = 0; -#endif /* ALLOW_REPEAT */ - if (use_menu) { screen_save(); @@ -7948,9 +7806,7 @@ static COMMAND_CODE choose_essence(void) screen_load(); } -#ifdef ALLOW_REPEAT repeat_push(mode); -#endif /* ALLOW_REPEAT */ return mode; } @@ -7966,12 +7822,12 @@ static void add_essence(ESSENCE_IDX mode) COMMAND_CODE i; bool flag,redraw; char choice; - cptr q, s; + concptr q, s; object_type *o_ptr; int ask = TRUE; char out_val[160]; int num[22]; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; int use_essence; essence_type *es_ptr; bool able[22] = { 0 }; @@ -7986,11 +7842,8 @@ static void add_essence(ESSENCE_IDX mode) num[max_num++] = i; } -#ifdef ALLOW_REPEAT if (!repeat_pull(&i) || i<0 || i>=max_num) { -#endif /* ALLOW_REPEAT */ - /* Nothing chosen yet */ flag = FALSE; @@ -8078,8 +7931,6 @@ static void add_essence(ESSENCE_IDX mode) /* Show list */ redraw = TRUE; - - /* Save the screen */ if (!use_menu) screen_save(); for (y = 1; y < 24; y++) @@ -8176,8 +8027,6 @@ static void add_essence(ESSENCE_IDX mode) { /* Hide list */ redraw = FALSE; - - /* Restore the screen */ screen_load(); } @@ -8219,17 +8068,12 @@ static void add_essence(ESSENCE_IDX mode) /* Stop the loop */ flag = TRUE; } - - /* Restore the screen */ if (redraw) screen_load(); if (!flag) return; -#ifdef ALLOW_REPEAT repeat_push(i); } -#endif /* ALLOW_REPEAT */ - es_ptr = &essence_info[num[i]]; if (es_ptr->add == ESSENCE_SLAY_GLOVE) @@ -8242,25 +8086,12 @@ static void add_essence(ESSENCE_IDX mode) item_tester_hook = object_is_armour; else item_tester_hook = object_is_weapon_armour_ammo; - item_tester_no_ryoute = TRUE; - /* Get an item */ q = _("どのアイテムを改良しますか?", "Improve which item? "); s = _("改良できるアイテムがありません。", "You have nothing to improve."); - if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; - - /* Get the item (in the pack) */ - if (item >= 0) - { - o_ptr = &inventory[item]; - } - - /* Get the item (on the floor) */ - else - { - o_ptr = &o_list[0 - item]; - } + o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR | IGNORE_BOTHHAND_SLOT)); + if (!o_ptr) return; if ((mode != 10) && (object_is_artifact(o_ptr) || object_is_smith(o_ptr))) { @@ -8463,7 +8294,7 @@ static void add_essence(ESSENCE_IDX mode) #endif /* Combine the pack */ - p_ptr->notice |= (PN_COMBINE | PN_REORDER); + p_ptr->update |= (PU_COMBINE | PU_REORDER); p_ptr->window |= (PW_INVEN); } @@ -8475,37 +8306,25 @@ static void add_essence(ESSENCE_IDX mode) static void erase_essence(void) { OBJECT_IDX item; - cptr q, s; + concptr q, s; object_type *o_ptr; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; BIT_FLAGS flgs[TR_FLAG_SIZE]; item_tester_hook = object_is_smith; - /* Get an item */ q = _("どのアイテムのエッセンスを消去しますか?", "Remove from which item? "); s = _("エッセンスを付加したアイテムがありません。", "You have nothing to remove essence."); - if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; - - /* Get the item (in the pack) */ - if (item >= 0) - { - o_ptr = &inventory[item]; - } - - /* Get the item (on the floor) */ - else - { - o_ptr = &o_list[0 - item]; - } + o_ptr = choose_object(&item, q, s, (USE_INVEN | USE_FLOOR)); + if (!o_ptr) return; object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY)); if (!get_check(format(_("よろしいですか? [%s]", "Are you sure? [%s]"), o_name))) return; p_ptr->energy_use = 100; - if (o_ptr->xtra3 == 1+ESSENCE_SLAY_GLOVE) + if (o_ptr->xtra3 == 1 + ESSENCE_SLAY_GLOVE) { o_ptr->to_h -= (o_ptr->xtra4>>8); o_ptr->to_d -= (o_ptr->xtra4 & 0x000f); @@ -8519,7 +8338,7 @@ static void erase_essence(void) msg_print(_("エッセンスを取り去った。", "You removed all essence you have added.")); /* Combine the pack */ - p_ptr->notice |= (PN_COMBINE | PN_REORDER); + p_ptr->update |= (PU_COMBINE | PU_REORDER); p_ptr->window |= (PW_INVEN); } @@ -8538,11 +8357,7 @@ void do_cmd_kaji(bool only_browse) if (!only_browse) { - if (p_ptr->confused) - { - msg_print(_("混乱していて作業できない!", "You are too confused!")); - return; - } + if (cmd_limit_confused(p_ptr)) return; if (p_ptr->blind) { msg_print(_("目が見えなくて作業できない!", "You are blind!")); @@ -8555,11 +8370,8 @@ void do_cmd_kaji(bool only_browse) } } -#ifdef ALLOW_REPEAT if (!(repeat_pull(&mode) && 1 <= mode && mode <= 5)) { -#endif /* ALLOW_REPEAT */ - if (only_browse) screen_save(); do { if (!only_browse) screen_save(); @@ -8678,11 +8490,8 @@ void do_cmd_kaji(bool only_browse) } if (!only_browse) screen_load(); } while (only_browse); -#ifdef ALLOW_REPEAT repeat_push(mode); } -#endif /* ALLOW_REPEAT */ - switch(mode) { case 1: display_essence();break;