X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fobject2.c;h=d1a604a8d1f5e74ab02f9444bfaeaec3a1d9f552;hb=7de4d6dfb51f88bb16a02b538ab727fc1a6b9858;hp=16475bfd09a7661464fd73e5a3c25d26bd9d3f05;hpb=53fc93f4b873db8788e8500ca3cfe85eb785598a;p=hengband%2Fhengband.git diff --git a/src/object2.c b/src/object2.c index 16475bfd0..d1a604a8d 100644 --- a/src/object2.c +++ b/src/object2.c @@ -12,11 +12,13 @@ */ #include "angband.h" +#include "object-hook.h" +#include "object-curse.h" static void one_sustain(object_type *o_ptr); -static cptr const kaji_tips[5] = +static concptr const kaji_tips[5] = { #ifdef JP "現在持っているエッセンスの一覧を表示する。", @@ -57,14 +59,12 @@ static void one_sustain(object_type *o_ptr) * @param o_idx 削除対象のオブジェクト構造体ポインタ * @return なし */ -void excise_object_idx(int o_idx) +void excise_object_idx(OBJECT_IDX o_idx) { object_type *j_ptr; - s16b this_o_idx, next_o_idx = 0; - - s16b prev_o_idx = 0; - + OBJECT_IDX this_o_idx, next_o_idx = 0; + OBJECT_IDX prev_o_idx = 0; /* Object */ j_ptr = &o_list[o_idx]; @@ -81,14 +81,11 @@ void excise_object_idx(int 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 */ next_o_idx = o_ptr->next_o_idx; - /* Done */ if (this_o_idx == o_idx) { /* No previous */ @@ -113,7 +110,6 @@ void excise_object_idx(int o_idx) /* Forget next pointer */ o_ptr->next_o_idx = 0; - /* Done */ break; } @@ -127,24 +123,20 @@ void excise_object_idx(int o_idx) { cave_type *c_ptr; - int y = j_ptr->iy; - int x = j_ptr->ix; + 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 */ next_o_idx = o_ptr->next_o_idx; - /* Done */ if (this_o_idx == o_idx) { /* No previous */ @@ -169,7 +161,6 @@ void excise_object_idx(int o_idx) /* Forget next pointer */ o_ptr->next_o_idx = 0; - /* Done */ break; } @@ -187,7 +178,7 @@ void excise_object_idx(int o_idx) * @details * Handle "stacks" of objects correctly. */ -void delete_object_idx(int o_idx) +void delete_object_idx(OBJECT_IDX o_idx) { object_type *j_ptr; @@ -200,17 +191,14 @@ void delete_object_idx(int o_idx) /* Dungeon floor */ if (!(j_ptr->held_m_idx)) { - int y, x; + POSITION y, x; - /* Location */ y = j_ptr->iy; x = j_ptr->ix; /* Visual update */ lite_spot(y, x); } - - /* Wipe the object */ object_wipe(j_ptr); /* Count objects */ @@ -225,32 +213,24 @@ void delete_object_idx(int o_idx) * @param x 削除したフロアマスのX座標 * @return なし */ -void delete_object(int y, int x) +void delete_object(POSITION y, POSITION x) { cave_type *c_ptr; - - s16b this_o_idx, next_o_idx = 0; - + OBJECT_IDX this_o_idx, next_o_idx = 0; /* 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 */ @@ -272,20 +252,18 @@ void delete_object(int y, int 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 */ @@ -298,12 +276,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) { @@ -323,7 +297,7 @@ static void compact_objects_aux(IDX i1, IDX i2) /* Dungeon */ else { - int y, x; + POSITION y, x; /* Acquire location */ y = o_ptr->iy; @@ -340,7 +314,6 @@ static void compact_objects_aux(IDX i1, IDX i2) } } - /* Structure copy */ o_list[i2] = o_list[i1]; @@ -367,22 +340,17 @@ static void compact_objects_aux(IDX i1, IDX i2) */ void compact_objects(int size) { - IDX i; - int y, x, num, cnt; + OBJECT_IDX i; + POSITION y, x; + int num, cnt; int cur_lev, cur_dis, chance; object_type *o_ptr; - /* Compact */ if (size) { - /* Message */ msg_print(_("アイテム情報を圧縮しています...", "Compacting objects...")); - - /* Redraw map */ p_ptr->redraw |= (PR_MAP); - - /* Window stuff */ p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON); } @@ -415,7 +383,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; @@ -426,7 +393,6 @@ void compact_objects(int size) /* Dungeon */ else { - /* Get the location */ y = o_ptr->iy; x = o_ptr->ix; } @@ -444,7 +410,6 @@ void compact_objects(int size) /* Apply the saving throw */ if (randint0(100) < chance) continue; - /* Delete the object */ delete_object_idx(i); /* Count it */ @@ -523,8 +488,8 @@ void wipe_o_list(void) cave_type *c_ptr; /* Access location */ - int y = o_ptr->iy; - int x = o_ptr->ix; + POSITION y = o_ptr->iy; + POSITION x = o_ptr->ix; /* Access grid */ c_ptr = &cave[y][x]; @@ -532,8 +497,6 @@ void wipe_o_list(void) /* Hack -- see above */ c_ptr->o_idx = 0; } - - /* Wipe the object */ object_wipe(o_ptr); } @@ -553,10 +516,9 @@ void wipe_o_list(void) * This routine should almost never fail, but in case it does, * we must be sure to handle "failure" of this routine. */ -IDX o_pop(void) +OBJECT_IDX o_pop(void) { - IDX i; - + OBJECT_IDX i; /* Initial allocation */ if (o_max < max_o_idx) @@ -579,8 +541,6 @@ 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 */ @@ -597,7 +557,6 @@ IDX o_pop(void) /* Warn the player (except during dungeon creation) */ if (character_dungeon) msg_print(_("アイテムが多すぎる!", "Too many objects!")); - /* Oops */ return (0); } @@ -656,11 +615,11 @@ static errr get_obj_num_prep(void) * Note that if no objects are "appropriate", then this function will\n * fail, and return zero, but this should *almost* never happen.\n */ -s16b get_obj_num(int level) +OBJECT_IDX get_obj_num(DEPTH level) { - int i, j, p; - int k_idx; - long value, total; + int i, j, p; + KIND_OBJECT_IDX k_idx; + long value, total; object_kind *k_ptr; alloc_entry *table = alloc_kind_table; @@ -772,8 +731,6 @@ s16b get_obj_num(int level) if (table[i].level < table[j].level) i = j; } - - /* Result */ return (table[i].index); } @@ -829,7 +786,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); @@ -841,7 +798,6 @@ void object_aware(object_type *o_ptr) } } - /*! * @brief オブジェクトを試行済にする / * Something has been "sampled" @@ -854,6 +810,79 @@ void object_tried(object_type *o_ptr) k_info[o_ptr->k_idx].tried = TRUE; } +/*! +* @brief 重度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 1 (Heavy). +* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。 +* @return 擬似鑑定結果のIDを返す。 +*/ +byte value_check_aux1(object_type *o_ptr) +{ + /* Artifacts */ + if (object_is_artifact(o_ptr)) + { + /* Cursed/Broken */ + if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_TERRIBLE; + + /* Normal */ + return FEEL_SPECIAL; + } + + /* Ego-Items */ + if (object_is_ego(o_ptr)) + { + /* Cursed/Broken */ + if (object_is_cursed(o_ptr) || object_is_broken(o_ptr)) return FEEL_WORTHLESS; + + /* Normal */ + return FEEL_EXCELLENT; + } + + /* Cursed items */ + if (object_is_cursed(o_ptr)) return FEEL_CURSED; + + /* Broken items */ + if (object_is_broken(o_ptr)) return FEEL_BROKEN; + + if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) return FEEL_AVERAGE; + + /* Good "armor" bonus */ + if (o_ptr->to_a > 0) return FEEL_GOOD; + + /* Good "weapon" bonus */ + if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_GOOD; + + /* Default to "average" */ + return FEEL_AVERAGE; +} + +/*! +* @brief 軽度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 2 (Light). +* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。 +* @return 擬似鑑定結果のIDを返す。 +*/ +byte value_check_aux2(object_type *o_ptr) +{ + /* Cursed items (all of them) */ + if (object_is_cursed(o_ptr)) return FEEL_CURSED; + + /* Broken items (all of them) */ + if (object_is_broken(o_ptr)) return FEEL_BROKEN; + + /* Artifacts -- except cursed/broken ones */ + if (object_is_artifact(o_ptr)) return FEEL_UNCURSED; + + /* Ego-Items -- except cursed/broken ones */ + if (object_is_ego(o_ptr)) return FEEL_UNCURSED; + + /* Good armor bonus */ + if (o_ptr->to_a > 0) return FEEL_UNCURSED; + + /* Good weapon bonuses */ + if (o_ptr->to_h + o_ptr->to_d > 0) return FEEL_UNCURSED; + + /* No feeling */ + return FEEL_NONE; +} /*! * @brief 未鑑定なベースアイテムの基本価格を返す / @@ -897,7 +926,7 @@ static s32b object_value_base(object_type *o_ptr) /* Figurines, relative to monster level */ case TV_FIGURINE: { - int level = r_info[o_ptr->pval].level; + DEPTH level = r_info[o_ptr->pval].level; if (level < 20) return level*50L; else if (level < 30) return 1000+(level-20)*150L; else if (level < 40) return 2500+(level-30)*350L; @@ -925,7 +954,7 @@ static s32b object_value_base(object_type *o_ptr) s32b flag_cost(object_type *o_ptr, int plusses) { s32b total = 0; - u32b flgs[TR_FLAG_SIZE]; + BIT_FLAGS flgs[TR_FLAG_SIZE]; s32b tmp_cost; int count; int i; @@ -1155,12 +1184,10 @@ s32b flag_cost(object_type *o_ptr, int plusses) *\n * Every wearable item with a "pval" bonus is worth extra (see below).\n */ -s32b object_value_real(object_type *o_ptr) +PRICE object_value_real(object_type *o_ptr) { - s32b value; - - u32b flgs[TR_FLAG_SIZE]; - + PRICE value; + BIT_FLAGS flgs[TR_FLAG_SIZE]; object_kind *k_ptr = &k_info[o_ptr->k_idx]; @@ -1280,7 +1307,6 @@ s32b object_value_real(object_type *o_ptr) */ value += (value * o_ptr->pval / o_ptr->number / (k_ptr->pval * 2)); - /* Done */ break; } case TV_STAFF: @@ -1290,7 +1316,6 @@ s32b object_value_real(object_type *o_ptr) */ value += (value * o_ptr->pval / (k_ptr->pval * 2)); - /* Done */ break; } @@ -1304,7 +1329,6 @@ s32b object_value_real(object_type *o_ptr) /* Give credit for bonuses */ value += ((o_ptr->to_h + o_ptr->to_d + o_ptr->to_a) * 200L); - /* Done */ break; } @@ -1325,7 +1349,6 @@ s32b object_value_real(object_type *o_ptr) /* Give credit for bonuses */ value += (((o_ptr->to_h - k_ptr->to_h) + (o_ptr->to_d - k_ptr->to_d)) * 200L + (o_ptr->to_a) * 100L); - /* Done */ break; } @@ -1346,7 +1369,6 @@ s32b object_value_real(object_type *o_ptr) value += (o_ptr->dd - k_ptr->dd) * o_ptr->ds * 250L; value += (o_ptr->ds - k_ptr->ds) * o_ptr->dd * 250L; - /* Done */ break; } @@ -1365,14 +1387,13 @@ s32b object_value_real(object_type *o_ptr) value += (o_ptr->dd - k_ptr->dd) * o_ptr->ds * 5L; value += (o_ptr->ds - k_ptr->ds) * o_ptr->dd * 5L; - /* Done */ break; } /* Figurines, relative to monster level */ case TV_FIGURINE: { - int level = r_info[o_ptr->pval].level; + DEPTH level = r_info[o_ptr->pval].level; if (level < 20) value = level*50L; else if (level < 30) value = 1000+(level-20)*150L; else if (level < 40) value = 2500+(level-30)*350L; @@ -1417,10 +1438,9 @@ s32b object_value_real(object_type *o_ptr) * Note that discounted items stay discounted forever, even if\n * the discount is "forgotten" by the player via memory loss.\n */ -s32b object_value(object_type *o_ptr) +PRICE object_value(object_type *o_ptr) { - s32b value; - + PRICE value; /* Unknown items -- acquire a base value */ if (object_is_known(o_ptr)) @@ -1485,12 +1505,10 @@ 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); - /* Window stuff */ p_ptr->window |= (PW_INVEN | PW_EQUIP); - /* Done */ return FALSE; } @@ -1851,8 +1869,8 @@ void object_absorb(object_type *o_ptr, object_type *j_ptr) /* Hack -- blend "feelings" */ if (j_ptr->feeling) o_ptr->feeling = j_ptr->feeling; - /* Hack -- could average discounts XXX XXX XXX */ - /* Hack -- save largest discount XXX XXX XXX */ + /* Hack -- could average discounts */ + /* Hack -- save largest discount */ if (o_ptr->discount < j_ptr->discount) o_ptr->discount = j_ptr->discount; /* Hack -- if rods are stacking, add the pvals (maximum timeouts) and current timeouts together. -LM- */ @@ -1877,11 +1895,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++) @@ -1911,12 +1929,10 @@ IDX lookup_kind(OBJECT_TYPE_VALUE tval, OBJECT_SUBTYPE_VALUE sval) } #if 0 - /* Oops */ msg_format(_("アイテムがない (%d,%d)", "No object (%d,%d)"), tval, sval); #endif - /* Oops */ return (0); } @@ -2084,8 +2100,6 @@ int m_bonus(int max, DEPTH level) /* Enforce the maximum value */ if (value > max) return (max); - - /* Result */ return (value); } @@ -2097,15 +2111,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); } @@ -2124,7 +2136,7 @@ static void object_mention(object_type *o_ptr) static bool make_artifact_special(object_type *o_ptr) { IDX i; - IDX k_idx = 0; + KIND_OBJECT_IDX k_idx = 0; /*! @note 地上ではキャンセルする / No artifacts in the town */ if (!dun_level) return (FALSE); @@ -2192,8 +2204,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); @@ -2691,7 +2702,7 @@ static void add_esp_weak(object_type *o_ptr, bool extra) * Hack -- note special processing for crown/helm\n * Hack -- note special processing for robe of permanence\n */ -static void a_m_aux_2(object_type *o_ptr, int level, int power) +static void a_m_aux_2(object_type *o_ptr, DEPTH level, int power) { ARMOUR_CLASS toac1 = (ARMOUR_CLASS)randint1(5) + m_bonus(5, level); ARMOUR_CLASS toac2 = (ARMOUR_CLASS)m_bonus(10, level); @@ -3123,7 +3134,7 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power) o_ptr->to_d -= 6; o_ptr->to_h -= 6; break; - case EGO_NAZGUL: + case EGO_NAZGUL: o_ptr->to_d -= 3; o_ptr->to_h -= 3; if (one_in_(3)) add_flag(o_ptr->art_flags, TR_COWARDICE); @@ -3159,7 +3170,7 @@ static void a_m_aux_2(object_type *o_ptr, int level, int power) * Hack -- note special "pval boost" code for ring of speed\n * Hack -- note that some items must be cursed (or blessed)\n */ -static void a_m_aux_3(object_type *o_ptr, int level, int power) +static void a_m_aux_3(object_type *o_ptr, DEPTH level, int power) { /* Apply magic (good or bad) according to type */ switch (o_ptr->tval) @@ -3955,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); } @@ -3970,7 +3980,7 @@ static bool item_monster_okay(MONRACE_IDX r_idx) * @details * Hack -- note the special code for various items */ -static void a_m_aux_4(object_type *o_ptr, int level, int power) +static void a_m_aux_4(object_type *o_ptr, DEPTH level, int power) { object_kind *k_ptr = &k_info[o_ptr->k_idx]; @@ -4415,12 +4425,9 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode) if (a_ptr->gen_flags & (TRG_RANDOM_CURSE1)) o_ptr->curse_flags |= get_curse(1, o_ptr); if (a_ptr->gen_flags & (TRG_RANDOM_CURSE2)) o_ptr->curse_flags |= get_curse(2, o_ptr); - /* Done */ return; } - - /* Apply magic */ switch (o_ptr->tval) { case TV_DIGGING: @@ -4652,7 +4659,6 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode) o_ptr->pval = 2; } - /* Done */ return; } @@ -4776,7 +4782,8 @@ static bool kind_is_good(KIND_OBJECT_IDX k_idx) */ bool make_object(object_type *j_ptr, BIT_FLAGS mode) { - int prob, base; + PERCENTAGE prob; + DEPTH base; /* Chance of "special object" */ @@ -4789,7 +4796,7 @@ bool make_object(object_type *j_ptr, BIT_FLAGS mode) /* Generate a special object, or a normal object */ if (!one_in_(prob) || !make_artifact_special(j_ptr)) { - IDX k_idx; + KIND_OBJECT_IDX k_idx; /* Good objects */ if ((mode & AM_GOOD) && !get_obj_num_hook) @@ -4858,7 +4865,7 @@ bool make_object(object_type *j_ptr, BIT_FLAGS mode) */ void place_object(POSITION y, POSITION x, BIT_FLAGS mode) { - IDX o_idx; + OBJECT_IDX o_idx; /* Acquire grid */ cave_type *c_ptr = &cave[y][x]; @@ -4876,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) */ @@ -4894,14 +4897,11 @@ 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 */ object_copy(o_ptr, q_ptr); - /* Location */ o_ptr->iy = y; o_ptr->ix = x; @@ -4911,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 @@ -4939,10 +4937,8 @@ void place_object(POSITION y, POSITION x, BIT_FLAGS mode) bool make_gold(object_type *j_ptr) { int i; - s32b base; - /* Hack -- Pick a Treasure variety */ i = ((randint1(object_level + 2) + 2) / 2) - 1; @@ -4962,7 +4958,7 @@ bool make_gold(object_type *j_ptr) object_prep(j_ptr, OBJ_GOLD_LIST + i); /* Hack -- Base coin cost */ - base = k_info[OBJ_GOLD_LIST+i].cost; + base = k_info[OBJ_GOLD_LIST + i].cost; /* Determine how much the treasure is "worth" */ j_ptr->pval = (base + (8L * randint1(base)) + randint1(8)); @@ -4983,12 +4979,11 @@ bool make_gold(object_type *j_ptr) */ void place_gold(POSITION y, POSITION x) { - s16b o_idx; + OBJECT_IDX o_idx; /* Acquire grid */ cave_type *c_ptr = &cave[y][x]; - object_type forge; object_type *q_ptr; @@ -5002,17 +4997,12 @@ 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 */ if (!make_gold(q_ptr)) return; - /* Make an object */ o_idx = o_pop(); @@ -5020,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 */ @@ -5037,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); } } @@ -5053,7 +5039,7 @@ void place_gold(POSITION y, POSITION x) * @param chance ドロップの成功率(%) * @param y 配置したいフロアのY座標 * @param x 配置したいフロアのX座標 - * @return 生成に成功したらTRUEを返す。 + * @return 生成に成功したらオブジェクトのIDを返す。 * @details * The initial location is assumed to be "in_bounds()".\n *\n @@ -5068,22 +5054,21 @@ void place_gold(POSITION y, POSITION x) * the object can combine, stack, or be placed. Artifacts will try very\n * hard to be placed, including "teleporting" to a useful grid if needed.\n */ -s16b drop_near(object_type *j_ptr, int chance, int y, int x) +OBJECT_IDX drop_near(object_type *j_ptr, PERCENTAGE chance, POSITION y, POSITION x) { int i, k, d, s; int bs, bn; - int by, bx; - int dy, dx; - int ty, tx = 0; - - s16b o_idx = 0; + POSITION by, bx; + POSITION dy, dx; + POSITION ty, tx = 0; - s16b this_o_idx, next_o_idx = 0; + OBJECT_IDX o_idx = 0; + OBJECT_IDX this_o_idx, next_o_idx = 0; cave_type *c_ptr; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; bool flag = FALSE; bool done = FALSE; @@ -5100,15 +5085,11 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) /* Handle normal "breakage" */ if (!object_is_artifact(j_ptr) && (randint0(100) < chance)) { - /* Message */ #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(_("(破損)", "(breakage)")); @@ -5141,7 +5122,6 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) /* Ignore distant grids */ if (d > 10) continue; - /* Location */ ty = y + dy; tx = x + dx; @@ -5164,8 +5144,6 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) 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 */ @@ -5203,7 +5181,6 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) by = ty; bx = tx; - /* Okay */ flag = TRUE; } } @@ -5212,12 +5189,10 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) /* Handle lack of space */ if (!flag && !object_is_artifact(j_ptr)) { - /* Message */ #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 @@ -5246,7 +5221,6 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) /* Require floor space */ if (!cave_drop_bold(by, bx)) continue; - /* Okay */ flag = TRUE; } @@ -5267,7 +5241,6 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) /* No valid place! */ if (!candidates) { - /* Message */ #ifdef JP msg_format("%sは消えた。", o_name); #else @@ -5316,15 +5289,12 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) } - /* 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 */ @@ -5333,32 +5303,26 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) /* Check for combination */ if (object_similar(o_ptr, j_ptr)) { - /* Combine the items */ object_absorb(o_ptr, j_ptr); /* Success */ done = TRUE; - /* Done */ break; } } - /* Get new object */ if (!done) o_idx = o_pop(); /* Failure */ if (!done && !o_idx) { - /* Message */ #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)")); @@ -5398,13 +5362,8 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) done = TRUE; } - /* Note the spot */ note_spot(by, bx); - - /* Draw the spot */ lite_spot(by, bx); - - /* Sound */ sound(SOUND_DROP); /* Mega-Hack -- no message if "dropped" by player */ @@ -5414,9 +5373,6 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) msg_print(_("何かが足下に転がってきた。", "You feel something roll beneath your feet.")); } - /* XXX XXX XXX */ - - /* Result */ return (o_idx); } @@ -5432,7 +5388,7 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x) * @param known TRUEならばオブジェクトが必ず*鑑定*済になる * @return なし */ -void acquirement(int y1, int x1, int num, bool great, bool special, bool known) +void acquirement(POSITION y1, POSITION x1, int num, bool great, bool special, bool known) { object_type *i_ptr; object_type object_type_body; @@ -5441,10 +5397,7 @@ void acquirement(int y1, int x1, int num, bool great, bool special, bool known) /* 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) */ @@ -5475,7 +5428,7 @@ typedef struct { OBJECT_TYPE_VALUE tval; OBJECT_SUBTYPE_VALUE sval; - int prob; + PERCENTAGE prob; byte flag; } amuse_type; @@ -5506,7 +5459,7 @@ amuse_type amuse_info[] = * @param known TRUEならばオブジェクトが必ず*鑑定*済になる * @return なし */ -void amusement(int y1, int x1, int num, bool known) +void amusement(POSITION y1, POSITION x1, int num, bool known) { object_type *i_ptr; object_type object_type_body; @@ -5521,7 +5474,8 @@ void amusement(int y1, int x1, int num, bool known) while (num) { int i; - IDX k_idx, a_idx = 0; + KIND_OBJECT_IDX k_idx; + ARTIFACT_IDX a_idx = 0; int r = randint0(t); bool insta_art, fixed_art; @@ -5530,14 +5484,8 @@ void amusement(int y1, int 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 */ @@ -5591,135 +5539,13 @@ void amusement(int y1, int x1, int num, bool known) } -#define MAX_NORMAL_TRAPS 18 - -/* See init_feat_variables() in init2.c */ -static s16b normal_traps[MAX_NORMAL_TRAPS]; - -/*! - * @brief タグに従って、基本トラップテーブルを初期化する / Initialize arrays for normal traps - * @return なし - */ -void init_normal_traps(void) -{ - int cur_trap = 0; - - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_TRAPDOOR"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_PIT"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_SPIKED_PIT"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_POISON_PIT"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_TY_CURSE"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_TELEPORT"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_FIRE"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_ACID"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_SLOW"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_LOSE_STR"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_LOSE_DEX"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_LOSE_CON"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_BLIND"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_CONFUSE"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_POISON"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_SLEEP"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_TRAPS"); - normal_traps[cur_trap++] = f_tag_to_index_in_init("TRAP_ALARM"); -} - -/*! - * @brief 基本トラップをランダムに選択する / - * Get random trap - * @return 選択したトラップのID - * @details - * XXX XXX XXX This routine should be redone to reflect trap "level".\n - * That is, it does not make sense to have spiked pits at 50 feet.\n - * Actually, it is not this routine, but the "trap instantiation"\n - * code, which should also check for "trap doors" on quest levels.\n - */ -s16b choose_random_trap(void) -{ - s16b feat; - - /* Pick a trap */ - while (1) - { - /* Hack -- pick a trap */ - feat = normal_traps[randint0(MAX_NORMAL_TRAPS)]; - - /* Accept non-trapdoors */ - if (!have_flag(f_info[feat].flags, FF_MORE)) break; - - /* Hack -- no trap doors on special levels */ - if (p_ptr->inside_arena || quest_number(dun_level)) continue; - - /* Hack -- no trap doors on the deepest level */ - if (dun_level >= d_info[dungeon_type].maxdepth) continue; - - break; - } - - return feat; -} - -/*! - * @brief マスに存在するトラップを秘匿する / - * Disclose an invisible trap - * @param y 秘匿したいマスのY座標 - * @param x 秘匿したいマスのX座標 - * @return なし - */ -void disclose_grid(int y, int x) -{ - cave_type *c_ptr = &cave[y][x]; - - if (cave_have_flag_grid(c_ptr, FF_SECRET)) - { - /* No longer hidden */ - cave_alter_feat(y, x, FF_SECRET); - } - else if (c_ptr->mimic) - { - /* No longer hidden */ - c_ptr->mimic = 0; - - /* Notice */ - note_spot(y, x); - - /* Redraw */ - lite_spot(y, x); - } -} - -/*! - * @brief マスをトラップを配置する / - * The location must be a legal, naked, floor grid. - * @param y 配置したいマスのY座標 - * @param x 配置したいマスのX座標 - * @return - * Note that all traps start out as "invisible" and "untyped", and then\n - * when they are "discovered" (by detecting them or setting them off),\n - * the trap is "instantiated" as a visible, "typed", trap.\n - */ -void place_trap(int y, int x) -{ - cave_type *c_ptr = &cave[y][x]; - - /* Paranoia -- verify location */ - if (!in_bounds(y, x)) return; - - /* Require empty, clean, floor grid */ - if (!cave_clean_bold(y, x)) return; - - /* Place an invisible trap */ - c_ptr->mimic = c_ptr->feat; - c_ptr->feat = choose_random_trap(); -} - /*! * @brief 魔道具の使用回数の残量を示すメッセージを表示する / * Describe the charges on an item in the inventory. * @param item 残量を表示したいプレイヤーのアイテム所持スロット * @return なし */ -void inven_item_charges(int item) +void inven_item_charges(INVENTORY_IDX item) { object_type *o_ptr = &inventory[item]; @@ -5742,14 +5568,12 @@ void inven_item_charges(int 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 @@ -5762,15 +5586,13 @@ void inven_item_charges(int item) * @param item 残量を表示したいプレイヤーのアイテム所持スロット * @return なし */ -void inven_item_describe(int 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) @@ -5790,13 +5612,13 @@ void inven_item_describe(int item) } /*! - * @brief アイテムの残り所持数メッセージを表示する / + * @brief アイテムを増減させ残り所持数メッセージを表示する / * Increase the "number" of an item in the inventory * @param item 所持数を増やしたいプレイヤーのアイテム所持スロット * @param num 増やしたい量 * @return なし */ -void inven_item_increase(int item, int num) +void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num) { object_type *o_ptr = &inventory[item]; @@ -5808,7 +5630,7 @@ void inven_item_increase(int 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) @@ -5818,17 +5640,14 @@ void inven_item_increase(int 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); - /* Window stuff */ p_ptr->window |= (PW_INVEN | PW_EQUIP); /* Hack -- Clear temporary elemental brands if player takes off weapons */ @@ -5852,7 +5671,7 @@ void inven_item_increase(int item, int num) * @param item 消去したいプレイヤーのアイテム所持スロット * @return なし */ -void inven_item_optimize(int item) +void inven_item_optimize(INVENTORY_IDX item) { object_type *o_ptr = &inventory[item]; @@ -5880,7 +5699,6 @@ void inven_item_optimize(int item) /* Erase the "final" slot */ object_wipe(&inventory[i]); - /* Window stuff */ p_ptr->window |= (PW_INVEN); } @@ -5892,8 +5710,6 @@ void inven_item_optimize(int item) /* Erase the empty slot */ object_wipe(&inventory[item]); - - /* Recalculate bonuses */ p_ptr->update |= (PU_BONUS); /* Recalculate torch */ @@ -5902,11 +5718,9 @@ void inven_item_optimize(int item) /* Recalculate mana XXX */ p_ptr->update |= (PU_MANA); - /* Window stuff */ p_ptr->window |= (PW_EQUIP); } - /* Window stuff */ p_ptr->window |= (PW_SPELL); } @@ -5916,7 +5730,7 @@ void inven_item_optimize(int item) * @param item メッセージの対象にしたいアイテム所持スロット * @return なし */ -void floor_item_charges(int item) +void floor_item_charges(INVENTORY_IDX item) { object_type *o_ptr = &o_list[item]; @@ -5939,14 +5753,12 @@ void floor_item_charges(int 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 @@ -5959,15 +5771,13 @@ void floor_item_charges(int item) * @param item メッセージの対象にしたいアイテム所持スロット * @return なし */ -void floor_item_describe(int 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) @@ -5992,7 +5802,7 @@ void floor_item_describe(int item) * @param num 増やしたいアイテムの数 * @return なし */ -void floor_item_increase(int item, int num) +void floor_item_increase(INVENTORY_IDX item, ITEM_NUMBER num) { object_type *o_ptr = &o_list[item]; @@ -6004,10 +5814,10 @@ void floor_item_increase(int 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; } @@ -6017,7 +5827,7 @@ void floor_item_increase(int item, int num) * @param item 消去したいアイテムの所持スロット * @return なし */ -void floor_item_optimize(int item) +void floor_item_optimize(INVENTORY_IDX item) { object_type *o_ptr = &o_list[item]; @@ -6027,7 +5837,6 @@ void floor_item_optimize(int item) /* Only optimize empty items */ if (o_ptr->number) return; - /* Delete the object */ delete_object_idx(item); } @@ -6057,7 +5866,6 @@ bool inven_carry_okay(object_type *o_ptr) if (object_similar(j_ptr, o_ptr)) return (TRUE); } - /* Nope */ return (FALSE); } @@ -6192,16 +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); - - /* Window stuff */ p_ptr->window |= (PW_INVEN); /* Success */ @@ -6271,19 +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); - - /* Window stuff */ + p_ptr->update |= (PU_BONUS | PU_COMBINE | PU_REORDER); p_ptr->window |= (PW_INVEN); /* Return the slot */ @@ -6312,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 */ @@ -6325,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 */ @@ -6335,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 */ @@ -6370,7 +6161,6 @@ INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt) /* Carry the object */ slot = inven_carry(q_ptr); - /* Message */ #ifdef JP msg_format("%s(%c)%s。", o_name, index_to_label(slot), act); #else @@ -6398,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]; @@ -6410,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) { @@ -6421,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 */ @@ -6437,7 +6223,6 @@ void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt) /* Describe local object */ object_desc(o_name, q_ptr, 0); - /* Message */ msg_format(_("%s(%c)を落とした。", "You drop %s (%c)."), o_name, index_to_label(item)); /* Drop it near the player */ @@ -6471,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 */ @@ -6482,7 +6266,6 @@ void combine_pack(void) { int max_num; - /* Get the item */ j_ptr = &inventory[j]; /* Skip empty items */ @@ -6544,13 +6327,11 @@ void combine_pack(void) } } - /* Window stuff */ p_ptr->window |= (PW_INVEN); /* Take note */ combined = TRUE; - /* Done */ break; } } @@ -6558,7 +6339,6 @@ void combine_pack(void) } while (combined); - /* Message */ if (flag) msg_print(_("ザックの中のアイテムをまとめ直した。", "You combine some items in your pack.")); } @@ -6585,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 */ @@ -6605,8 +6384,6 @@ void reorder_pack(void) /* Take note */ flag = TRUE; - - /* Get local object */ q_ptr = &forge; /* Save a copy of the moving item */ @@ -6622,11 +6399,9 @@ void reorder_pack(void) /* Insert the moving item */ object_copy(&inventory[j], q_ptr); - /* Window stuff */ p_ptr->window |= (PW_INVEN); } - /* Message */ if (flag) msg_print(_("ザックの中のアイテムを並べ直した。", "You reorder some items in your pack.")); } @@ -6638,7 +6413,7 @@ void reorder_pack(void) * @details * Include list of usable spells for readible books */ -void display_koff(IDX k_idx) +void display_koff(KIND_OBJECT_IDX k_idx) { int y; @@ -6647,7 +6422,7 @@ void display_koff(IDX k_idx) int sval; REALM_IDX use_realm; - char o_name[MAX_NLEN]; + GAME_TEXT o_name[MAX_NLEN]; /* Erase the window */ @@ -6659,14 +6434,10 @@ void display_koff(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 */ @@ -6728,7 +6499,7 @@ object_type *choose_warning_item(void) /* Search Inventory */ for (i = INVEN_RARM; i < INVEN_TOTAL; i++) { - u32b flgs[TR_FLAG_SIZE]; + BIT_FLAGS flgs[TR_FLAG_SIZE]; object_type *o_ptr = &inventory[i]; object_flags(o_ptr, flgs); @@ -6752,7 +6523,7 @@ object_type *choose_warning_item(void) * @param max 算出した最大ダメージを返すポインタ * @return なし */ -static void spell_damcalc(monster_type *m_ptr, int typ, HIT_POINT dam, int *max) +static void spell_damcalc(monster_type *m_ptr, EFFECT_ID typ, HIT_POINT dam, int *max) { monster_race *r_ptr = &r_info[m_ptr->r_idx]; int rlev = r_ptr->level; @@ -6997,7 +6768,7 @@ static void spell_damcalc(monster_type *m_ptr, int typ, HIT_POINT dam, int *max) * @param max 算出した最大ダメージを返すポインタ * @return なし */ -void spell_damcalc_by_spellnum(int spell_num, int typ, MONSTER_IDX m_idx, int *max) +void spell_damcalc_by_spellnum(int spell_num, EFFECT_ID typ, MONSTER_IDX m_idx, int *max) { monster_type *m_ptr = &m_list[m_idx]; HIT_POINT dam = monspell_damage((spell_num), m_idx, DAM_MAX); @@ -7019,7 +6790,7 @@ static int blow_damcalc(monster_type *m_ptr, monster_blow *blow_ptr) if (blow_ptr->method != RBM_EXPLODE) { - int ac = p_ptr->ac + p_ptr->to_a; + ARMOUR_CLASS ac = p_ptr->ac + p_ptr->to_a; switch (blow_ptr->effect) { @@ -7088,11 +6859,11 @@ static int blow_damcalc(monster_type *m_ptr, monster_blow *blow_ptr) * @param yy 危険性を調査するマスのY座標 * @return 警告を無視して進むことを選択するかか問題が無ければTRUE、警告に従ったならFALSEを返す。 */ -bool process_warning(int xx, int yy) +bool process_warning(POSITION xx, POSITION yy) { - int mx, my; + 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; @@ -7122,42 +6893,42 @@ bool process_warning(int xx, int yy) /* Monster spells (only powerful ones)*/ if (projectable(my, mx, yy, xx)) { - u32b f4 = r_ptr->flags4; - u32b f5 = r_ptr->a_ability_flags1; - u32b f6 = r_ptr->a_ability_flags2; + BIT_FLAGS f4 = r_ptr->flags4; + BIT_FLAGS f5 = r_ptr->a_ability_flags1; + BIT_FLAGS f6 = r_ptr->a_ability_flags2; if (!(d_info[dungeon_type].flags1 & DF1_NO_MAGIC)) { - if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(MS_BALL_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0); - if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(MS_BALL_MANA, GF_MANA, c_ptr->m_idx, &dam_max0); - if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(MS_BALL_DARK, GF_DARK, c_ptr->m_idx, &dam_max0); - if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(MS_STARBURST, GF_LITE, c_ptr->m_idx, &dam_max0); - if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(MS_HAND_DOOM, GF_HAND_DOOM, c_ptr->m_idx, &dam_max0); - if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(MS_PSY_SPEAR, GF_PSY_SPEAR, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BA_CHAO) spell_damcalc_by_spellnum(MS_BALL_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0); + if (f5 & RF5_BA_MANA) spell_damcalc_by_spellnum(MS_BALL_MANA, GF_MANA, c_ptr->m_idx, &dam_max0); + if (f5 & RF5_BA_DARK) spell_damcalc_by_spellnum(MS_BALL_DARK, GF_DARK, c_ptr->m_idx, &dam_max0); + if (f5 & RF5_BA_LITE) spell_damcalc_by_spellnum(MS_STARBURST, GF_LITE, c_ptr->m_idx, &dam_max0); + if (f6 & RF6_HAND_DOOM) spell_damcalc_by_spellnum(MS_HAND_DOOM, GF_HAND_DOOM, c_ptr->m_idx, &dam_max0); + if (f6 & RF6_PSY_SPEAR) spell_damcalc_by_spellnum(MS_PSY_SPEAR, GF_PSY_SPEAR, c_ptr->m_idx, &dam_max0); } - if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(MS_ROCKET, GF_ROCKET, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(MS_BR_ACID, GF_ACID, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(MS_BR_ELEC, GF_ELEC, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(MS_BR_FIRE, GF_FIRE, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(MS_BR_COLD, GF_COLD, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(MS_BR_POIS, GF_POIS, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(MS_BR_NETHER, GF_NETHER, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(MS_BR_LITE, GF_LITE, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(MS_BR_DARK, GF_DARK, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(MS_BR_CONF, GF_CONFUSION, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(MS_BR_SOUND, GF_SOUND, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(MS_BR_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(MS_BR_DISEN, GF_DISENCHANT, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(MS_BR_NEXUS, GF_NEXUS, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(MS_BR_TIME, GF_TIME, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(MS_BR_INERTIA, GF_INERTIAL, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(MS_BR_GRAVITY, GF_GRAVITY, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(MS_BR_SHARDS, GF_SHARDS, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(MS_BR_PLASMA, GF_PLASMA, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(MS_BR_FORCE, GF_FORCE, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(MS_BR_MANA, GF_MANA, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(MS_BR_NUKE, GF_NUKE, c_ptr->m_idx, &dam_max0); - if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(MS_BR_DISI, GF_DISINTEGRATE, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_ROCKET) spell_damcalc_by_spellnum(MS_ROCKET, GF_ROCKET, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_ACID) spell_damcalc_by_spellnum(MS_BR_ACID, GF_ACID, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_ELEC) spell_damcalc_by_spellnum(MS_BR_ELEC, GF_ELEC, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_FIRE) spell_damcalc_by_spellnum(MS_BR_FIRE, GF_FIRE, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_COLD) spell_damcalc_by_spellnum(MS_BR_COLD, GF_COLD, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_POIS) spell_damcalc_by_spellnum(MS_BR_POIS, GF_POIS, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_NETH) spell_damcalc_by_spellnum(MS_BR_NETHER, GF_NETHER, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_LITE) spell_damcalc_by_spellnum(MS_BR_LITE, GF_LITE, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_DARK) spell_damcalc_by_spellnum(MS_BR_DARK, GF_DARK, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_CONF) spell_damcalc_by_spellnum(MS_BR_CONF, GF_CONFUSION, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_SOUN) spell_damcalc_by_spellnum(MS_BR_SOUND, GF_SOUND, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_CHAO) spell_damcalc_by_spellnum(MS_BR_CHAOS, GF_CHAOS, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_DISE) spell_damcalc_by_spellnum(MS_BR_DISEN, GF_DISENCHANT, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_NEXU) spell_damcalc_by_spellnum(MS_BR_NEXUS, GF_NEXUS, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_TIME) spell_damcalc_by_spellnum(MS_BR_TIME, GF_TIME, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_INER) spell_damcalc_by_spellnum(MS_BR_INERTIA, GF_INERTIAL, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_GRAV) spell_damcalc_by_spellnum(MS_BR_GRAVITY, GF_GRAVITY, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_SHAR) spell_damcalc_by_spellnum(MS_BR_SHARDS, GF_SHARDS, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_PLAS) spell_damcalc_by_spellnum(MS_BR_PLASMA, GF_PLASMA, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_WALL) spell_damcalc_by_spellnum(MS_BR_FORCE, GF_FORCE, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_MANA) spell_damcalc_by_spellnum(MS_BR_MANA, GF_MANA, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_NUKE) spell_damcalc_by_spellnum(MS_BR_NUKE, GF_NUKE, c_ptr->m_idx, &dam_max0); + if (f4 & RF4_BR_DISI) spell_damcalc_by_spellnum(MS_BR_DISI, GF_DISINTEGRATE, c_ptr->m_idx, &dam_max0); } /* Monster melee attacks */ @@ -7200,7 +6971,7 @@ bool process_warning(int xx, int 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? ")); } } @@ -7217,7 +6988,7 @@ bool process_warning(int xx, int 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? ")); } @@ -7225,39 +6996,11 @@ bool process_warning(int xx, int yy) } /*! - * @brief エッセンスの付加可能な武器や矢弾かを返す - * @param o_ptr チェックしたいオブジェクトの構造体参照ポインタ - * @return エッセンスの付加可能な武器か矢弾ならばTRUEを返す。 - */ -static bool item_tester_hook_melee_ammo(object_type *o_ptr) -{ - switch (o_ptr->tval) - { - case TV_HAFTED: - case TV_POLEARM: - case TV_DIGGING: - case TV_BOLT: - case TV_ARROW: - case TV_SHOT: - { - return (TRUE); - } - case TV_SWORD: - { - if (o_ptr->sval != SV_DOKUBARI) return (TRUE); - } - } - - return (FALSE); -} - - -/*! * エッセンス情報の構造体 / A structure for smithing */ 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 */ @@ -7496,7 +7239,7 @@ static essence_type essence_info[] = * エッセンス名テーブル / Essense names for Weapon smith */ #ifdef JP -cptr essence_name[] = +concptr essence_name[] = { "腕力", "知能", @@ -7599,7 +7342,7 @@ cptr essence_name[] = #else -cptr essence_name[] = +concptr essence_name[] = { "strength", "intelligen.", @@ -7743,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; @@ -7754,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; } @@ -7966,9 +7696,8 @@ 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); - /* Window stuff */ p_ptr->window |= (PW_INVEN); } @@ -7983,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[] = { "武器属性", "耐性", "能力", @@ -7993,7 +7722,7 @@ static COMMAND_CODE choose_essence(void) "その他" }; #else - cptr menu_name[] = { + concptr menu_name[] = { "Brand weapon", "Resistance", "Ability", @@ -8005,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(); @@ -8080,9 +7806,7 @@ static COMMAND_CODE choose_essence(void) screen_load(); } -#ifdef ALLOW_REPEAT repeat_push(mode); -#endif /* ALLOW_REPEAT */ return mode; } @@ -8098,14 +7822,15 @@ 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 }; int menu_line = (use_menu ? 1 : 0); @@ -8117,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; @@ -8138,7 +7860,6 @@ static void add_essence(ESSENCE_IDX mode) choice = (always_show_list || use_menu) ? ESCAPE:1; while (!flag) { - bool able[22] = {0}; if( choice==ESCAPE ) choice = ' '; else if( !get_com(out_val, &choice, FALSE) )break; @@ -8210,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++) @@ -8308,8 +8027,6 @@ static void add_essence(ESSENCE_IDX mode) { /* Hide list */ redraw = FALSE; - - /* Restore the screen */ screen_load(); } @@ -8351,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) @@ -8374,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))) { @@ -8595,9 +8294,8 @@ 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); - /* Window stuff */ p_ptr->window |= (PW_INVEN); } @@ -8608,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); @@ -8652,9 +8338,8 @@ 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); - /* Window stuff */ p_ptr->window |= (PW_INVEN); } @@ -8689,11 +8374,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(); @@ -8749,19 +8431,14 @@ void do_cmd_kaji(bool only_browse) { while (!mode) { + prt(_(" a) エッセンス一覧", " a) List essences"), 2, 14); + prt(_(" b) エッセンス抽出", " b) Extract essence"), 3, 14); + prt(_(" c) エッセンス消去", " c) Remove essence"), 4, 14); + prt(_(" d) エッセンス付加", " d) Add essence"), 5, 14); + prt(_(" e) 武器/防具強化", " e) Enchant weapon/armor"), 6, 14); #ifdef JP - prt(" a) エッセンス一覧", 2, 14); - prt(" b) エッセンス抽出", 3, 14); - prt(" c) エッセンス消去", 4, 14); - prt(" d) エッセンス付加", 5, 14); - prt(" e) 武器/防具強化", 6, 14); if (!get_com(format("どの能力を%sますか:", only_browse ? "調べ" : "使い"), &choice, TRUE)) #else - prt(" a) List essences", 2, 14); - prt(" b) Extract essence", 3, 14); - prt(" c) Remove essence", 4, 14); - prt(" d) Add essence", 5, 14); - prt(" e) Enchant weapon/armor", 6, 14); if (!get_com("Command :", &choice, TRUE)) #endif { @@ -8817,11 +8494,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; @@ -8845,7 +8519,7 @@ void do_cmd_kaji(bool only_browse) * @param flgs 特別に追加するフラグを返す参照ポインタ * @return なし */ -void torch_flags(object_type *o_ptr, u32b *flgs) +void torch_flags(object_type *o_ptr, BIT_FLAGS *flgs) { if ((o_ptr->tval == TV_LITE) && (o_ptr->sval == SV_LITE_TORCH)) { @@ -8866,7 +8540,7 @@ void torch_flags(object_type *o_ptr, u32b *flgs) * @param ds 特別なダイス面数を返す参照ポインタ * @return なし */ -void torch_dice(object_type *o_ptr, int *dd, int *ds) +void torch_dice(object_type *o_ptr, DICE_NUMBER *dd, DICE_SID *ds) { if ((o_ptr->tval == TV_LITE) && (o_ptr->sval == SV_LITE_TORCH)) {