OSDN Git Service

[Refactor] #37287 #37353 型の置換。 / Type replacement.
[hengband/hengband.git] / src / object2.c
index 5e6fa91..b485248 100644 (file)
  */
 
 #include "angband.h"
+#include "object-hook.h"
+
+static void one_sustain(object_type *o_ptr);
+
 
 static cptr const kaji_tips[5] =
 {
@@ -31,6 +35,25 @@ static cptr const kaji_tips[5] =
 };
 
 /*!
+ * @brief 対象のオブジェクトにランダムな能力維持を一つ付加する。/ Choose one random sustain
+ * @details 重複の抑止はない。
+ * @param o_ptr 対象のオブジェクト構造体ポインタ
+ * @return なし
+ */
+static void one_sustain(object_type *o_ptr)
+{
+       switch (randint0(6))
+       {
+       case 0: add_flag(o_ptr->art_flags, TR_SUST_STR); break;
+       case 1: add_flag(o_ptr->art_flags, TR_SUST_INT); break;
+       case 2: add_flag(o_ptr->art_flags, TR_SUST_WIS); break;
+       case 3: add_flag(o_ptr->art_flags, TR_SUST_DEX); break;
+       case 4: add_flag(o_ptr->art_flags, TR_SUST_CON); break;
+       case 5: add_flag(o_ptr->art_flags, TR_SUST_CHR); break;
+       }
+}
+
+/*!
  * @brief 床上、モンスター所持でスタックされたアイテムを削除しスタックを補完する / Excise a dungeon object from any stacks
  * @param o_idx 削除対象のオブジェクト構造体ポインタ
  * @return なし
@@ -1933,7 +1956,7 @@ void object_copy(object_type *o_ptr, object_type *j_ptr)
  * @param k_idx 新たに作成したいベースアイテム情報のID
  * @return なし
  */
-void object_prep(object_type *o_ptr, OBJECT_IDX k_idx)
+void object_prep(object_type *o_ptr, KIND_OBJECT_IDX k_idx)
 {
        object_kind *k_ptr = &k_info[k_idx];
 
@@ -1967,7 +1990,7 @@ void object_prep(object_type *o_ptr, OBJECT_IDX k_idx)
        o_ptr->ds = k_ptr->ds;
 
        /* Default activation */
-       if (k_ptr->act_idx > 0) o_ptr->xtra2 = k_ptr->act_idx;
+       if (k_ptr->act_idx > 0) o_ptr->xtra2 = (XTRA8)k_ptr->act_idx;
 
        /* Hack -- worthless items are always "broken" */
        if (k_info[o_ptr->k_idx].cost <= 0) o_ptr->ident |= (IDENT_BROKEN);
@@ -2025,7 +2048,7 @@ void object_prep(object_type *o_ptr, OBJECT_IDX k_idx)
  * 120    0.03  0.11  0.31  0.46  1.31  2.48  4.60  7.78 11.67 25.53 45.72\n
  * 128    0.02  0.01  0.13  0.33  0.83  1.41  3.24  6.17  9.57 14.22 64.07\n
  */
-s16b m_bonus(int max, int level)
+int m_bonus(int max, DEPTH level)
 {
        int bonus, stand, extra, value;
 
@@ -2281,13 +2304,13 @@ static byte get_random_ego(byte slot, bool good)
  * Hack -- note special base damage dice boosting\n
  * Hack -- note special processing for weapon/digger\n
  */
-static void a_m_aux_1(object_type *o_ptr, int level, int power)
+static void a_m_aux_1(object_type *o_ptr, DEPTH level, int power)
 {
-       HIT_PROB tohit1 = randint1(5) + m_bonus(5, level);
-       HIT_POINT todam1 = randint1(5) + m_bonus(5, level);
+       HIT_PROB tohit1 = randint1(5) + (HIT_PROB)m_bonus(5, level);
+       HIT_POINT todam1 = randint1(5) + (HIT_POINT)m_bonus(5, level);
 
-       HIT_PROB tohit2 = m_bonus(10, level);
-       HIT_POINT todam2 = m_bonus(10, level);
+       HIT_PROB tohit2 = (HIT_PROB)m_bonus(10, level);
+       HIT_POINT todam2 = (HIT_POINT)m_bonus(10, level);
 
        if ((o_ptr->tval == TV_BOLT) || (o_ptr->tval == TV_ARROW) || (o_ptr->tval == TV_SHOT))
        {
@@ -2452,13 +2475,13 @@ static void a_m_aux_1(object_type *o_ptr, int level, int power)
                                                add_flag(o_ptr->art_flags, TR_RES_FEAR);
                                        break;
                                case EGO_SHARPNESS:
-                                       o_ptr->pval = m_bonus(5, level) + 1;
+                                       o_ptr->pval = (PARAMETER_VALUE)m_bonus(5, level) + 1;
                                        break;
                                case EGO_EARTHQUAKES:
                                        if (one_in_(3) && (level > 60))
                                                add_flag(o_ptr->art_flags, TR_BLOWS);
                                        else
-                                               o_ptr->pval = m_bonus(3, level);
+                                               o_ptr->pval = (PARAMETER_VALUE)m_bonus(3, level);
                                        break;
                                case EGO_VAMPIRIC:
                                        if (one_in_(5))
@@ -2671,8 +2694,8 @@ static void add_esp_weak(object_type *o_ptr, bool extra)
  */
 static void a_m_aux_2(object_type *o_ptr, int level, int power)
 {
-       ARMOUR_CLASS toac1 = randint1(5) + m_bonus(5, level);
-       ARMOUR_CLASS toac2 = m_bonus(10, level);
+       ARMOUR_CLASS toac1 = (ARMOUR_CLASS)randint1(5) + m_bonus(5, level);
+       ARMOUR_CLASS toac2 = (ARMOUR_CLASS)m_bonus(10, level);
 
        /* Good */
        if (power > 0)
@@ -3101,7 +3124,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);
@@ -3150,7 +3173,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_ATTACKS:
                                {
                                        /* Stat bonus */
-                                       o_ptr->pval = m_bonus(2, level);
+                                       o_ptr->pval = (PARAMETER_VALUE)m_bonus(2, level);
                                        if (one_in_(15)) o_ptr->pval++;
                                        if (o_ptr->pval < 1) o_ptr->pval = 1;
 
@@ -3181,7 +3204,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_DEX:
                                {
                                        /* Stat bonus */
-                                       o_ptr->pval = 1 + m_bonus(5, level);
+                                       o_ptr->pval = 1 + (PARAMETER_VALUE)m_bonus(5, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3203,7 +3226,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_SPEED:
                                {
                                        /* Base speed (1 to 10) */
-                                       o_ptr->pval = randint1(5) + m_bonus(5, level);
+                                       o_ptr->pval = randint1(5) + (PARAMETER_VALUE)m_bonus(5, level);
 
                                        /* Super-charge the ring */
                                        while (randint0(100) < 50) o_ptr->pval++;
@@ -3235,7 +3258,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                        while (one_in_(4));
 
                                        /* Bonus to armor class */
-                                       o_ptr->to_a = 10 + randint1(5) + m_bonus(10, level);
+                                       o_ptr->to_a = 10 + randint1(5) + (ARMOUR_CLASS)m_bonus(10, level);
                                }
                                break;
 
@@ -3249,7 +3272,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_SEARCHING:
                                {
                                        /* Bonus to searching */
-                                       o_ptr->pval = 1 + m_bonus(5, level);
+                                       o_ptr->pval = 1 + (PARAMETER_VALUE)m_bonus(5, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3274,7 +3297,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_ELEC:
                                {
                                        /* Bonus to armor class */
-                                       o_ptr->to_a = 5 + randint1(5) + m_bonus(10, level);
+                                       o_ptr->to_a = 5 + randint1(5) + (ARMOUR_CLASS)m_bonus(10, level);
                                        break;
                                }
 
@@ -3289,7 +3312,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                        o_ptr->curse_flags |= TRC_CURSED;
 
                                        /* Penalize */
-                                       o_ptr->pval = 0 - (1 + m_bonus(5, level));
+                                       o_ptr->pval = 0 - (1 + (PARAMETER_VALUE)m_bonus(5, level));
                                        if (power > 0) power = 0 - power;
 
                                        break;
@@ -3305,8 +3328,8 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                        o_ptr->curse_flags |= TRC_CURSED;
 
                                        /* Penalize */
-                                       o_ptr->to_a = 0 - (5 + m_bonus(10, level));
-                                       o_ptr->pval = 0 - (1 + m_bonus(5, level));
+                                       o_ptr->to_a = 0 - (5 + (ARMOUR_CLASS)m_bonus(10, level));
+                                       o_ptr->pval = 0 - (1 + (PARAMETER_VALUE)m_bonus(5, level));
                                        if (power > 0) power = 0 - power;
 
                                        break;
@@ -3316,7 +3339,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_DAMAGE:
                                {
                                        /* Bonus to damage */
-                                       o_ptr->to_d = 1 + randint1(5) + m_bonus(16, level);
+                                       o_ptr->to_d = 1 + randint1(5) + (HIT_POINT)m_bonus(16, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3338,7 +3361,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_ACCURACY:
                                {
                                        /* Bonus to hit */
-                                       o_ptr->to_h = 1 + randint1(5) + m_bonus(16, level);
+                                       o_ptr->to_h = 1 + randint1(5) + (HIT_PROB)m_bonus(16, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3360,7 +3383,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_PROTECTION:
                                {
                                        /* Bonus to armor class */
-                                       o_ptr->to_a = 5 + randint1(8) + m_bonus(10, level);
+                                       o_ptr->to_a = 5 + randint1(8) + (ARMOUR_CLASS)m_bonus(10, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3382,8 +3405,8 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_RING_SLAYING:
                                {
                                        /* Bonus to damage and to hit */
-                                       o_ptr->to_d = randint1(5) + m_bonus(12, level);
-                                       o_ptr->to_h = randint1(5) + m_bonus(12, level);
+                                       o_ptr->to_d = randint1(5) + (HIT_POINT)m_bonus(12, level);
+                                       o_ptr->to_h = randint1(5) + (HIT_PROB)m_bonus(12, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3404,7 +3427,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
 
                                case SV_RING_MUSCLE:
                                {
-                                       o_ptr->pval = 1 + m_bonus(3, level);
+                                       o_ptr->pval = 1 + (PARAMETER_VALUE)m_bonus(3, level);
                                        if (one_in_(4)) o_ptr->pval++;
 
                                        /* Cursed */
@@ -3641,7 +3664,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                case SV_AMULET_WISDOM:
                                case SV_AMULET_CHARISMA:
                                {
-                                       o_ptr->pval = 1 + m_bonus(5, level);
+                                       o_ptr->pval = 1 + (PARAMETER_VALUE)m_bonus(5, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3700,7 +3723,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                /* Amulet of searching */
                                case SV_AMULET_SEARCHING:
                                {
-                                       o_ptr->pval = randint1(2) + m_bonus(4, level);
+                                       o_ptr->pval = randint1(2) + (PARAMETER_VALUE)m_bonus(4, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -3721,8 +3744,8 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                /* Amulet of the Magi -- never cursed */
                                case SV_AMULET_THE_MAGI:
                                {
-                                       o_ptr->pval = randint1(5) + m_bonus(5, level);
-                                       o_ptr->to_a = randint1(5) + m_bonus(5, level);
+                                       o_ptr->pval = randint1(5) + (PARAMETER_VALUE)m_bonus(5, level);
+                                       o_ptr->to_a = randint1(5) + (ARMOUR_CLASS)m_bonus(5, level);
 
                                        /* gain one low ESP */
                                        add_esp_weak(o_ptr, FALSE);
@@ -3740,8 +3763,8 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
                                        o_ptr->curse_flags |= (TRC_CURSED);
 
                                        /* Penalize */
-                                       o_ptr->pval = 0 - (randint1(5) + m_bonus(5, level));
-                                       o_ptr->to_a = 0 - (randint1(5) + m_bonus(5, level));
+                                       o_ptr->pval = 0 - (randint1(5) + (PARAMETER_VALUE)m_bonus(5, level));
+                                       o_ptr->to_a = 0 - (randint1(5) + (ARMOUR_CLASS)m_bonus(5, level));
                                        if (power > 0) power = 0 - power;
 
                                        break;
@@ -3749,7 +3772,7 @@ static void a_m_aux_3(object_type *o_ptr, int level, int power)
 
                                case SV_AMULET_MAGIC_MASTERY:
                                {
-                                       o_ptr->pval = 1 + m_bonus(4, level);
+                                       o_ptr->pval = 1 + (PARAMETER_VALUE)m_bonus(4, level);
 
                                        /* Cursed */
                                        if (power < 0)
@@ -4515,7 +4538,7 @@ void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode)
                }
 
                /* Hack -- apply activatin index if needed */
-               if (e_ptr->act_idx) o_ptr->xtra2 = e_ptr->act_idx;
+               if (e_ptr->act_idx) o_ptr->xtra2 = (XTRA8)e_ptr->act_idx;
 
                /* Hack -- apply extra penalties if needed */
                if ((object_is_cursed(o_ptr) || object_is_broken(o_ptr)) && !(e_ptr->gen_flags & (TRG_POWERFUL)))
@@ -4755,7 +4778,6 @@ static bool kind_is_good(KIND_OBJECT_IDX k_idx)
 bool make_object(object_type *j_ptr, BIT_FLAGS mode)
 {
        int prob, base;
-       DEPTH obj_level;
 
 
        /* Chance of "special object" */
@@ -4816,9 +4838,6 @@ bool make_object(object_type *j_ptr, BIT_FLAGS mode)
                }
        }
 
-       obj_level = k_info[j_ptr->k_idx].level;
-       if (object_is_fixed_artifact(j_ptr)) obj_level = a_info[j_ptr->name1].level;
-
        if (cheat_peek) object_mention(j_ptr);
 
        /* Success */
@@ -4921,10 +4940,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;
 
@@ -4944,7 +4961,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));
@@ -4965,12 +4982,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;
 
@@ -4994,7 +5010,6 @@ void place_gold(POSITION y, POSITION x)
        /* Make some gold */
        if (!make_gold(q_ptr)) return;
 
-
        /* Make an object */
        o_idx = o_pop();
 
@@ -5035,7 +5050,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
@@ -5050,18 +5065,17 @@ 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;
+       POSITION by, bx;
+       POSITION dy, dx;
+       POSITION ty, tx = 0;
 
-       s16b o_idx = 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;
 
@@ -5086,11 +5100,8 @@ s16b drop_near(object_type *j_ptr, int chance, int y, int x)
 #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)"));
 
@@ -5414,11 +5425,11 @@ 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;
-       u32b mode = AM_GOOD | (great || special ? AM_GREAT : 0L) | (special ? AM_SPECIAL : 0L) ;
+       BIT_FLAGS mode = AM_GOOD | (great || special ? AM_GREAT : 0L) | (special ? AM_SPECIAL : 0L) ;
 
        /* Acquirement */
        while (num--)
@@ -5488,7 +5499,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;
@@ -5573,128 +5584,6 @@ 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.
@@ -6285,9 +6174,9 @@ s16b inven_carry(object_type *o_ptr)
  * to fall to the ground.\n
  * Return the inventory slot into which the item is placed.\n
  */
-s16b inven_takeoff(int item, int amt)
+INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt)
 {
-       int slot;
+       INVENTORY_IDX slot;
 
        object_type forge;
        object_type *q_ptr;
@@ -6374,11 +6263,10 @@ s16b inven_takeoff(int item, int amt)
  * @details
  * The object will be dropped "near" the current location
  */
-void inven_drop(int item, int amt)
+void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt)
 {
        object_type forge;
        object_type *q_ptr;
-
        object_type *o_ptr;
 
        char o_name[MAX_NLEN];
@@ -7208,40 +7096,12 @@ 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 */
-       int type;      /* Menu number */
+       ESSENCE_IDX type;      /* Menu number */
        int essence;   /* Index for carrying essences */
        int value;     /* Needed value to add this ability */
 } essence_type;
@@ -7724,13 +7584,14 @@ static void drain_essence(void)
        bool observe = FALSE;
        int old_ds, old_dd, old_to_h, old_to_d, old_ac, old_to_a, old_pval, old_name2;
        TIME_EFFECT old_timeout;
-       u32b old_flgs[TR_FLAG_SIZE], new_flgs[TR_FLAG_SIZE];
+       BIT_FLAGS old_flgs[TR_FLAG_SIZE], new_flgs[TR_FLAG_SIZE];
        object_type *o_ptr;
        cptr q, s;
        POSITION iy, ix;
        byte_hack marked;
        ITEM_NUMBER number;
-       s16b next_o_idx, weight;
+       OBJECT_IDX next_o_idx;
+       WEIGHT weight;
 
        for (i = 0; i < sizeof(drain_value) / sizeof(int); i++)
                drain_value[i] = 0;
@@ -7958,7 +7819,7 @@ static void drain_essence(void)
  * @brief 付加するエッセンスの大別を選択する
  * @return 選んだエッセンスの大別ID
  */
-static int choose_essence(void)
+static COMMAND_CODE choose_essence(void)
 {
        COMMAND_CODE mode = 0;
        char choice;
@@ -7985,7 +7846,7 @@ static int choose_essence(void)
                "Others"
        };
 #endif
-       const int mode_max = 7;
+       const COMMAND_CODE mode_max = 7;
 
 #ifdef ALLOW_REPEAT
        if (repeat_pull(&mode) && 1 <= mode && mode <= mode_max)
@@ -8054,7 +7915,7 @@ static int choose_essence(void)
                                return 0;
                        }
 
-                       if (isupper(choice)) choice = tolower(choice);
+                       if (isupper(choice)) choice = (char)tolower(choice);
 
                        if ('a' <= choice && choice <= 'a' + (char)mode_max - 1)
                                mode = (int)choice - 'a' + 1;
@@ -8073,7 +7934,7 @@ static int choose_essence(void)
  * @param mode エッセンスの大別ID
  * @return なし
  */
-static void add_essence(int mode)
+static void add_essence(ESSENCE_IDX mode)
 {
        OBJECT_IDX item;
        int max_num = 0;
@@ -8088,6 +7949,7 @@ static void add_essence(int mode)
        char o_name[MAX_NLEN];
        int use_essence;
        essence_type *es_ptr;
+       bool able[22] = { 0 };
 
        int menu_line = (use_menu ? 1 : 0);
 
@@ -8120,7 +7982,6 @@ static void add_essence(int mode)
        choice = (always_show_list || use_menu) ? ESCAPE:1;
        while (!flag)
        {
-               bool able[22];
                if( choice==ESCAPE ) choice = ' '; 
                else if( !get_com(out_val, &choice, FALSE) )break; 
 
@@ -8305,7 +8166,7 @@ static void add_essence(int mode)
                        ask = (isupper(choice));
 
                        /* Lowercase */
-                       if (ask) choice = tolower(choice);
+                       if (ask) choice = (char)tolower(choice);
 
                        /* Extract request */
                        i = (islower(choice) ? A2I(choice) : -1);
@@ -8647,10 +8508,10 @@ static void erase_essence(void)
  */
 void do_cmd_kaji(bool only_browse)
 {
-       IDX mode = 0;
+       COMMAND_CODE mode = 0;
        char choice;
 
-       int menu_line = (use_menu ? 1 : 0);
+       COMMAND_CODE menu_line = (use_menu ? 1 : 0);
 
        if (!only_browse)
        {