OSDN Git Service

[Refactor] #38997 compact_objects() に floor_type * 引数を追加. / Add floor_type * argument...
[hengband/hengband.git] / src / object.h
index 6846202..dc56cf9 100644 (file)
@@ -1,5 +1,4 @@
-#pragma once
-#include "defines.h"
+#pragma once
 
 /*
  * Object information, for a specific object.
 #define OBJ_GOLD_LIST   480     /* First "gold" entry */
 #define MAX_GOLD        18      /* Number of "gold" entries */
 
+/* Lite flag macro */
+#define HAVE_LITE_FLAG(ARRAY) \
+       (have_flag(ARRAY, TR_LITE_1) || have_flag(ARRAY, TR_LITE_2) || have_flag(ARRAY, TR_LITE_3))
+
+#define HAVE_DARK_FLAG(ARRAY) \
+       (have_flag(ARRAY, TR_LITE_M1) || have_flag(ARRAY, TR_LITE_M2) || have_flag(ARRAY, TR_LITE_M3))
+
 typedef struct object_type object_type;
 
 struct object_type
@@ -284,17 +290,17 @@ struct object_type
 
 
        /*
-        * \95Ï\8bðver1.5.0\88È\91O\82É\8eg\82í\82ê\82Ä\82¢\82½\83A\83C\83e\83\80\82Ì\92Ç\89Á\93Á\90«\83t\83\89\83O / Hack -- special "xtra" object powers
+        * 変愚ver1.5.0以前に使われていたアイテムの追加特性フラグ / Hack -- special "xtra" object powers
         */
-       #define EGO_XTRA_SUSTAIN        1 /*!< \8b\8c\94Å\83A\83C\83e\83\80\83t\83\89\83O(\94ñ\90\84\8f§): \92Ç\89Á\88Û\8e\9d\94\\97Í / Sustain one stat */
-       #define EGO_XTRA_POWER          2 /*!< \8b\8c\94Å\83A\83C\83e\83\80\83t\83\89\83O(\94ñ\90\84\8f§): \92Ç\89Á\8fã\8b\89\91Ï\90« / High resist */
-       #define EGO_XTRA_ABILITY        3 /*!< \8b\8c\94Å\83A\83C\83e\83\80\83t\83\89\83O(\94ñ\90\84\8f§): \92Ç\89Á\94\\97Í / Special ability */
+       #define EGO_XTRA_SUSTAIN        1 /*!< 旧版アイテムフラグ(非推奨): 追加維持能力 / Sustain one stat */
+       #define EGO_XTRA_POWER          2 /*!< 旧版アイテムフラグ(非推奨): 追加上級耐性 / High resist */
+       #define EGO_XTRA_ABILITY        3 /*!< 旧版アイテムフラグ(非推奨): 追加能力 / Special ability */
        XTRA8 xtra1;                    /* Extra info type (now unused) */
 
        XTRA8 xtra2;                    /* Extra info activation index */
-       XTRA8 xtra3;                    /* Extra info for weaponsmith */
-       XTRA16 xtra4;                   /*!< \8cõ\8c¹\82Ì\8ec\82è\8eõ\96½\81A\82 \82é\82¢\82Í\95ß\82ç\82¦\82½\83\82\83\93\83X\83^\81[\82Ì\8c»HP / Extra info fuel or captured monster's current HP */
-       XTRA16 xtra5;                   /*!< \95ß\82ç\82¦\82½\83\82\83\93\83X\83^\81[\82Ì\8dÅ\91åHP / Extra info captured monster's max HP */
+       XTRA8 xtra3;                    /*!< 複数の使用用途 捕らえたモンスターの速度,付加した特殊なエッセンスID / Extra info for weaponsmith */
+       XTRA16 xtra4;                   /*!< 複数の使用用途 光源の残り寿命、あるいは捕らえたモンスターの現HP / Extra info fuel or captured monster's current HP */
+       XTRA16 xtra5;                   /*!< 複数の使用用途 捕らえたモンスターの最大HP / Extra info captured monster's max HP */
 
        HIT_PROB to_h;                  /* Plusses to hit */
        HIT_POINT to_d;                 /* Plusses to damage */
@@ -328,7 +334,7 @@ struct object_type
         * OM_NOMSG --- temporary flag to suppress messages which were
         *              already printed in autopick_pickup_items().
         */
-       #define OM_FOUND        0x01    /*!< \83A\83C\83e\83\80\82ð\88ê\93x\82Å\82à\8e\8b\8aE\82É\8eû\82ß\82½\82±\82Æ\82ª\82 \82é\82© */
+       #define OM_FOUND        0x01    /*!< アイテムを一度でも視界に収めたことがあるか */
        #define OM_NOMSG        0x02    /* temporary flag to suppress messages */
        #define OM_NO_QUERY     0x04    /* Query for auto-pick was already answered as 'No' */
        #define OM_AUTODESTROY  0x08    /* Destroy later to avoid illegal inventry shift */
@@ -380,9 +386,9 @@ struct object_type
        BIT_FLAGS curse_flags;        /* Flags for curse */
 
        OBJECT_IDX next_o_idx;  /* Next object in stack (if any) */
-       MONSTER_IDX held_m_idx; /* Monster holding us (if any) */
+       MONSTER_IDX held_m_idx; /*!< アイテムを所持しているモンスターID (いないなら 0) / Monster holding us (if any) */
 
-       ARTIFACT_BIAS_IDX artifact_bias; /*!< \83\89\83\93\83_\83\80\83A\81[\83e\83B\83t\83@\83N\83g\90\90¬\8e\9e\82Ì\83o\83C\83A\83XID */
+       ARTIFACT_BIAS_IDX artifact_bias; /*!< ランダムアーティファクト生成時のバイアスID */
 };
 
 extern bool(*item_tester_hook)(object_type *o_ptr);
@@ -402,32 +408,23 @@ extern concptr item_activation(object_type *o_ptr);
 extern bool screen_object(object_type *o_ptr, BIT_FLAGS mode);
 
 extern char index_to_label(int i);
-extern INVENTORY_IDX label_to_inven(int c);
-extern INVENTORY_IDX label_to_equip(int c);
 extern s16b wield_slot(object_type *o_ptr);
-extern concptr mention_use(int i);
-extern concptr describe_use(int i);
+
 extern bool check_book_realm(const OBJECT_TYPE_VALUE book_tval, const OBJECT_SUBTYPE_VALUE book_sval);
-extern bool item_tester_okay(object_type *o_ptr);
-extern void display_inven(void);
-extern void display_equip(void);
-extern COMMAND_CODE show_inven(int target_item, BIT_FLAGS mode);
-extern COMMAND_CODE show_equip(int target_item, BIT_FLAGS mode);
-extern void toggle_inven_equip(void);
 
 /*
- * get_item()\8aÖ\90\94\82Å\83A\83C\83e\83\80\82Ì\91I\91ð\82ð\8ds\82¤\83t\83\89\83O / Bit flags for the "get_item" function
+ * get_item()関数でアイテムの選択を行うフラグ / Bit flags for the "get_item" function
  */
-#define USE_EQUIP 0x01 /*!< \83A\83C\83e\83\80\95\\8e¦/\91I\91ð\94Í\88Í: \91\95\94õ\95i\82©\82ç\82Ì\91I\91ð\82ð\8b\96\89Â\82·\82é / Allow equip items */
-#define USE_INVEN 0x02 /*!< \83A\83C\83e\83\80\95\\8e¦/\91I\91ð\94Í\88Í: \8f\8a\8e\9d\95i\82©\82ç\82Ì\91I\91ð\82ð\8b\96\89Â\82·\82é /  Allow inven items */
-#define USE_FLOOR 0x04 /*!< \83A\83C\83e\83\80\95\\8e¦/\91I\91ð\94Í\88Í: \8f°\89º\82Ì\83A\83C\83e\83\80\82©\82ç\82Ì\91I\91ð\82ð\8b\96\89Â\82·\82é /  Allow floor items */
-#define USE_FORCE 0x08 /*!< \93Á\8eê: w\83L\81[\82Å\98B\8bC\8fp\82Ö\82Ì\90Ø\82è\91Ö\82¦\82ð\8b\96\89Â\82·\82é */
-#define IGNORE_BOTHHAND_SLOT 0x10 /*!< \83A\83C\83e\83\80\95\\8e¦/\91I\91ð\94Í\88Í: \97¼\8eè\8e\9d\82¿\83X\83\8d\83b\83g\82ð\91I\91ð\82É\8aÜ\82ß\82È\82¢ */
-#define USE_FULL  0x20 /*!< \83A\83C\83e\83\80\95\\8e¦/\91I\91ð\94Í\88Í: \8bó\97\93\82Ü\82Å\82·\82×\82Ä\95\\8e¦\82·\82é*/
-extern bool can_get_item(void);
-extern bool get_item(OBJECT_IDX *cp, concptr pmt, concptr str, BIT_FLAGS mode);
-extern object_type *choose_object(OBJECT_IDX *idx, concptr q, concptr s, BIT_FLAGS option);
-PERCENTAGE breakage_chance(object_type *o_ptr, SPELL_IDX snipe_type);
+#define USE_EQUIP 0x01 /*!< アイテム表示/選択範囲: 装備品からの選択を許可する / Allow equip items */
+#define USE_INVEN 0x02 /*!< アイテム表示/選択範囲: 所持品からの選択を許可する /  Allow inven items */
+#define USE_FLOOR 0x04 /*!< アイテム表示/選択範囲: 床下のアイテムからの選択を許可する /  Allow floor items */
+#define USE_FORCE 0x08 /*!< 特殊: wキーで錬気術への切り替えを許可する */
+#define IGNORE_BOTHHAND_SLOT 0x10 /*!< アイテム表示/選択範囲: 両手持ちスロットを選択に含めない */
+#define USE_FULL  0x20 /*!< アイテム表示/選択範囲: 空欄まですべて表示する*/
+extern bool can_get_item(OBJECT_TYPE_VALUE tval);
+extern bool get_item(player_type *owner_ptr, OBJECT_IDX *cp, concptr pmt, concptr str, BIT_FLAGS mode, OBJECT_TYPE_VALUE tval);
+
+#define REF_ITEM(P_PTR, FLOOR_PTR, ID) ((ID >= 0 ? &(P_PTR)->inventory_list[ID] : &(FLOOR_PTR)->o_list[0 - item]))
 
 extern int bow_tval_ammo(object_type *o_ptr);
 
@@ -435,8 +432,7 @@ extern int bow_tval_ammo(object_type *o_ptr);
 extern void excise_object_idx(OBJECT_IDX o_idx);
 extern void delete_object_idx(OBJECT_IDX o_idx);
 extern void delete_object(POSITION y, POSITION x);
-extern void compact_objects(int size);
-extern void wipe_o_list(void);
+
 extern OBJECT_IDX o_pop(void);
 extern OBJECT_IDX get_obj_num(DEPTH level, BIT_FLAGS mode);
 extern void object_known(object_type *o_ptr);
@@ -444,20 +440,20 @@ extern void object_aware(object_type *o_ptr);
 extern void object_tried(object_type *o_ptr);
 
 /*
- * \83A\83C\83e\83\80\82Ì\8aÈ\88Õ\8aÓ\92è\92è\8b` / Game generated inscription indices. These are stored in the object,
+ * アイテムの簡易鑑定定義 / Game generated inscription indices. These are stored in the object,
  * and are used to index the string array from tables.c.
  */
-#define FEEL_NONE              0 /*!< \8aÈ\88Õ\8aÓ\92è: \96¢\8aÓ\92è */
-#define FEEL_BROKEN            1 /*!< \8aÈ\88Õ\8aÓ\92è: \89ó\82ê\82Ä\82¢\82é */
-#define FEEL_TERRIBLE          2 /*!< \8aÈ\88Õ\8aÓ\92è: \8b°\82ë\82µ\82¢ */
-#define FEEL_WORTHLESS         3 /*!< \8aÈ\88Õ\8aÓ\92è: \96³\89¿\92l */
-#define FEEL_CURSED            4 /*!< \8aÈ\88Õ\8aÓ\92è: \8eô\82í\82ê\82Ä\82¢\82é */
-#define FEEL_UNCURSED          5 /*!< \8aÈ\88Õ\8aÓ\92è: \8eô\82í\82ê\82Ä\82¢\82È\82¢ */
-#define FEEL_AVERAGE           6 /*!< \8aÈ\88Õ\8aÓ\92è: \95À */
-#define FEEL_GOOD              7 /*!< \8aÈ\88Õ\8aÓ\92è: \8fã\8e¿ */
-#define FEEL_EXCELLENT         8 /*!< \8aÈ\88Õ\8aÓ\92è: \8d\82\8b\89 */
-#define FEEL_SPECIAL           9 /*!< \8aÈ\88Õ\8aÓ\92è: \93Á\95Ê */
-#define FEEL_MAX               9 /*!< \8aÈ\88Õ\8aÓ\92è\82Ì\8eí\95Ê\90\94 */
+#define FEEL_NONE              0 /*!< 簡易鑑定: 未鑑定 */
+#define FEEL_BROKEN            1 /*!< 簡易鑑定: 壊れている */
+#define FEEL_TERRIBLE          2 /*!< 簡易鑑定: 恐ろしい */
+#define FEEL_WORTHLESS         3 /*!< 簡易鑑定: 無価値 */
+#define FEEL_CURSED            4 /*!< 簡易鑑定: 呪われている */
+#define FEEL_UNCURSED          5 /*!< 簡易鑑定: 呪われていない */
+#define FEEL_AVERAGE           6 /*!< 簡易鑑定: 並 */
+#define FEEL_GOOD              7 /*!< 簡易鑑定: 上質 */
+#define FEEL_EXCELLENT         8 /*!< 簡易鑑定: 高級 */
+#define FEEL_SPECIAL           9 /*!< 簡易鑑定: 特別 */
+#define FEEL_MAX               9 /*!< 簡易鑑定の種別数 */
 extern byte value_check_aux1(object_type *o_ptr);
 extern byte value_check_aux2(object_type *o_ptr);
 
@@ -481,16 +477,15 @@ extern void object_copy(object_type *o_ptr, object_type *j_ptr);
 #define AM_GREAT        0x00000004 /*!< Generate great items */
 #define AM_SPECIAL      0x00000008 /*!< Generate artifacts (for debug mode only) */
 #define AM_CURSED       0x00000010 /*!< Generate cursed/worthless items */
-#define AM_FORBID_CHEST 0x00000020 /*!< \94 \82©\82ç\82³\82ç\82É\94 \82ª\8fo\8c»\82·\82é\82±\82Æ\82ð\97}\8e~\82·\82é */
+#define AM_FORBID_CHEST 0x00000020 /*!< 箱からさらに箱が出現することを抑止する */
 extern void apply_magic(object_type *o_ptr, DEPTH lev, BIT_FLAGS mode);
 
 extern OBJECT_SUBTYPE_VALUE coin_type;
 
 extern bool make_object(object_type *j_ptr, BIT_FLAGS mode);
-extern void place_object(POSITION y, POSITION x, BIT_FLAGS mode);
 extern bool make_gold(object_type *j_ptr);
-extern void place_gold(POSITION y, POSITION x);
 extern OBJECT_IDX drop_near(object_type *o_ptr, PERCENTAGE chance, POSITION y, POSITION x);
+extern void vary_item(INVENTORY_IDX item, ITEM_NUMBER num);
 extern void inven_item_charges(INVENTORY_IDX item);
 extern void inven_item_describe(INVENTORY_IDX item);
 extern void inven_item_increase(INVENTORY_IDX item, ITEM_NUMBER num);
@@ -504,7 +499,7 @@ extern bool object_sort_comp(object_type *o_ptr, s32b o_value, object_type *j_pt
 extern s16b inven_carry(object_type *o_ptr);
 extern INVENTORY_IDX inven_takeoff(INVENTORY_IDX item, ITEM_NUMBER amt);
 extern void inven_drop(INVENTORY_IDX item, ITEM_NUMBER amt);
-extern void combine_pack(void);
+extern void combine_pack(player_type *owner_ptr);
 extern void reorder_pack(void);
 extern void display_koff(KIND_OBJECT_IDX k_idx);
 extern void torch_flags(object_type *o_ptr, BIT_FLAGS *flgs);
@@ -514,8 +509,9 @@ extern concptr essence_name[];
 
 extern s32b flag_cost(object_type *o_ptr, int plusses);
 
-extern bool get_item_floor(COMMAND_CODE *cp, concptr pmt, concptr str, BIT_FLAGS mode);
-extern void py_pickup_floor(bool pickup);
+extern bool get_item_floor(COMMAND_CODE *cp, concptr pmt, concptr str, BIT_FLAGS mode, OBJECT_TYPE_VALUE tval);
+extern void py_pickup_floor(player_type *creature_ptr, bool pickup);
+extern void prepare_label_string(char *label, BIT_FLAGS mode, OBJECT_TYPE_VALUE tval);
 
 /*
  * Return the "attr" for a given item.
@@ -1131,10 +1127,10 @@ extern void py_pickup_floor(bool pickup);
 #define SV_FOOD_PINT_OF_WINE            39
 
 
-#define SV_ROD_MIN_DIRECTION    12 /*!< \82±\82Ì\92l\88È\8d~\82Ì\8f¬\8d\80\96ÚID\82ð\8e\9d\82Á\82½\83\8d\83b\83h\82Í\8eg\97p\8e\9e\82É\83^\81[\83Q\83b\83g\82ð\97v\8b\81\82·\82é / Special "sval" limit -- first "aimed" rod */
+#define SV_ROD_MIN_DIRECTION    12 /*!< この値以降の小項目IDを持ったロッドは使用時にターゲットを要求する / Special "sval" limit -- first "aimed" rod */
 
-#define SV_CHEST_MIN_LARGE      4  /*!< \82±\82Ì\92l\88È\8d~\82Ì\8f¬\8d\80\96ÚID\82ð\8e\9d\82Á\82½\94 \82Í\91å\8c^\82Ì\94 \82Æ\82µ\82Ä\83h\83\8d\83b\83v\90\94\82ð\91\9d\82â\82· / Special "sval" limit -- first "large" chest */
-#define SV_CHEST_KANDUME        50 /*!< \94 \83A\83C\83e\83\80\82Ì\8f¬\8d\80\96ÚID: \82¨\82à\82¿\82á\82Ì\83J\83\93\83d\83\81 */
+#define SV_CHEST_MIN_LARGE      4  /*!< この値以降の小項目IDを持った箱は大型の箱としてドロップ数を増やす / Special "sval" limit -- first "large" chest */
+#define SV_CHEST_KANDUME        50 /*!< 箱アイテムの小項目ID: おもちゃのカンヅメ */
 
 /*
  * Special "sval" limit -- first "good" magic/prayer book