3 #include "system/angband.h"
5 #define STORE_OBJ_LEVEL 5 /* Magic Level for normal stores */
7 #define STORE_GENERAL 0 /*!< 店舗の種類: 雑貨屋 */
8 #define STORE_ARMOURY 1 /*!< 店舗の種類: 防具屋 */
9 #define STORE_WEAPON 2 /*!< 店舗の種類: 武器屋 */
10 #define STORE_TEMPLE 3 /*!< 店舗の種類: 寺院 */
11 #define STORE_ALCHEMIST 4 /*!< 店舗の種類: 錬金術の店 */
12 #define STORE_MAGIC 5 /*!< 店舗の種類: 魔道具屋 */
13 #define STORE_BLACK 6 /*!< 店舗の種類: ブラック・マーケット */
14 #define STORE_HOME 7 /*!< 店舗の種類: 我が家 */
15 #define STORE_BOOK 8 /*!< 店舗の種類: 書店 */
16 #define STORE_MUSEUM 9 /*!< 店舗の種類: 博物館 */
18 typedef struct object_type object_type;
19 typedef struct store_type {
20 byte type; /* Store type */
21 byte owner; /* Owner index */
22 byte extra; /* Unused for now */
23 s16b insult_cur; /* Insult counter */
24 s16b good_buy; /* Number of "good" buys */
25 s16b bad_buy; /* Number of "bad" buys */
26 s32b store_open; /* Closed until this turn */
27 s32b last_visit; /* Last visited on this turn */
28 s16b regular_num; /* Table -- Number of entries */
29 s16b regular_size; /* Table -- Total Size of Array */
30 KIND_OBJECT_IDX *regular; /* Table -- Legal regular item kinds */
31 s16b table_num; /* Table -- Number of entries */
32 s16b table_size; /* Table -- Total Size of Array */
33 KIND_OBJECT_IDX *table; /* Table -- Legal item kinds */
34 s16b stock_num; /* Stock -- Number of entries */
35 s16b stock_size; /* Stock -- Total Size of Array */
36 object_type *stock; /* Stock -- Actual stock items */
39 extern int cur_store_num;
40 extern store_type *st_ptr;
42 typedef bool (*black_market_crap_pf)(player_type *, object_type *);
43 typedef bool (*store_will_buy_pf)(player_type *, object_type *);
44 typedef void (*mass_produce_pf)(player_type *, object_type *);
45 void store_delete(void);
46 void store_create(player_type *player_ptr, KIND_OBJECT_IDX k_idx, black_market_crap_pf black_market_crap, store_will_buy_pf store_will_buy, mass_produce_pf mass_produce);
47 void store_item_increase(INVENTORY_IDX item, int num);
48 void store_item_optimize(INVENTORY_IDX item);
49 int store_carry(player_type *player_ptr, object_type *o_ptr);
50 bool store_object_similar(object_type *o_ptr, object_type *j_ptr);