OSDN Git Service

[Refactor] #37353 a_info と artifact_type 構造体を artifact.h へ移動。
[hengband/hengband.git] / src / artifact.h
1 #pragma once
2
3
4 typedef struct artifact_type artifact_type;
5
6 /*!
7  * @struct artifact_type
8  * @brief 固定アーティファクト情報の構造体 / Artifact structure.
9  * @details
10  * @note
11  * the save-file only writes "cur_num" to the savefile.
12  * "max_num" is always "1" (if that artifact "exists")
13  */
14 struct artifact_type
15 {
16         STR_OFFSET name;                        /*!< アーティファクト名(headerオフセット参照) / Name (offset) */
17         STR_OFFSET text;                        /*!< アーティファクト解説(headerオフセット参照) / Text (offset) */
18
19         OBJECT_TYPE_VALUE tval;         /*!< ベースアイテム大項目ID / Artifact type */
20         OBJECT_SUBTYPE_VALUE sval;      /*!< ベースアイテム小項目ID / Artifact sub type */
21
22         PARAMETER_VALUE pval;   /*!< pval修正値 / Artifact extra info */
23
24         HIT_PROB to_h;                  /*!< 命中ボーナス値 /  Bonus to hit */
25         HIT_POINT to_d;         /*!< ダメージボーナス値 / Bonus to damage */
26         ARMOUR_CLASS to_a;                      /*!< ACボーナス値 / Bonus to armor */
27
28         ARMOUR_CLASS ac;                        /*!< 上書きベースAC値 / Base armor */
29
30         DICE_NUMBER dd;
31         DICE_SID ds;    /*!< ダイス値 / Damage when hits */
32
33         WEIGHT weight;          /*!< 重量 / Weight */
34
35         PRICE cost;                     /*!< 基本価格 / Artifact "cost" */
36
37         BIT_FLAGS flags[TR_FLAG_SIZE];       /*! アイテムフラグ / Artifact Flags */
38
39         BIT_FLAGS gen_flags;            /*! アイテム生成フラグ / flags for generate */
40
41         DEPTH level;            /*! 基本生成階 / Artifact level */
42         RARITY rarity;          /*! レアリティ / Artifact rarity */
43
44         byte cur_num;           /*! 現在の生成数 / Number created (0 or 1) */
45         byte max_num;           /*! (未使用)最大生成数 / Unused (should be "1") */
46
47         FLOOR_IDX floor_id;      /*! アイテムを落としたフロアのID / Leaved on this location last time */
48
49         byte act_idx;           /*! 発動能力ID / Activative ability index */
50 };
51
52 extern artifact_type *a_info;
53 extern char *a_name;
54 extern char *a_text;
55
56 /* artifact.c */
57 extern bool create_artifact(object_type *o_ptr, bool a_scroll);
58 extern int activation_index(object_type *o_ptr);
59 extern const activation_type* find_activation_info(object_type *o_ptr);
60 extern void random_artifact_resistance(object_type * o_ptr, artifact_type *a_ptr);
61 extern bool create_named_art(ARTIFACT_IDX a_idx, POSITION y, POSITION x);
62 extern bool make_artifact(object_type *o_ptr);
63 extern bool make_artifact_special(object_type *o_ptr);
64
65 /*** Artifact indexes (see "lib/edit/a_info.txt") ***/
66
67 /* Lites */
68 #define ART_GALADRIEL            1
69 #define ART_ELENDIL              2
70 #define ART_JUDGE                3
71 #define ART_EDISON               7
72 #define ART_PALANTIR             15
73 #define ART_STONE_LORE           17
74 #define ART_FLY_STONE            147
75 #define ART_ORB_OF_FATE          245 
76 /* Amulets */
77 #define ART_CARLAMMAS            4
78 #define ART_INGWE                5
79 #define ART_DWARVES              6
80 #define ART_FARAMIR              18
81 #define ART_BOROMIR              143
82 #define ART_MAGATAMA             149
83 #define ART_INROU                166
84 #define ART_NIGHT                215
85 #define ART_SACRED_KNIGHTS       217
86 #define ART_HELL                 218
87 #define ART_CHARMED              219
88 #define ART_GOGO                 220
89
90 /* Rings */
91 #define ART_FRAKIR               8
92 #define ART_TULKAS               9
93 #define ART_NARYA               10
94 #define ART_NENYA               11
95 #define ART_VILYA               12
96 #define ART_POWER               13
97 #define ART_AHO                 14
98
99 /* Dragon Scale */
100 #define ART_RAZORBACK           129
101 #define ART_BLADETURNER         130
102 #define ART_SEIRYU              201
103
104 /* Hard Armour */
105 #define ART_SOULKEEPER          19
106 #define ART_ISILDUR             20
107 #define ART_ROHIRRIM            21
108 #define ART_LOHENGRIN           22
109 #define ART_JULIAN              23
110 #define ART_ARVEDUI             24
111 #define ART_CASPANION           25
112 #define ART_GILES               168
113 #define ART_MORLOK              203
114 #define ART_VETERAN             206
115
116 /* Soft Armour */
117 #define ART_SHIVA_JACKET        26
118 #define ART_HITHLOMIR           27
119 #define ART_THALKETTOTH         28
120 #define ART_HIMRING             127
121 #define ART_ICANUS              131
122 #define ART_NAMAKE_ARMOR        183
123 #define ART_GHB                 192
124 #define ART_DASAI               200
125 #define ART_KESHO               204
126 #define ART_MILIM               246
127
128 /* Shields */
129 #define ART_THORIN              30
130 #define ART_CELEGORM            31
131 #define ART_ANARION             32
132 #define ART_GIL_GALAD           138
133 #define ART_YENDOR              141
134 #define ART_YATA                151
135 #define ART_EARENDIL            186
136 #define ART_PERSEUS             197
137
138 /* Helms and Crowns */
139 #define ART_INDRA               33
140 #define ART_CHAOS               34
141 #define ART_BERUTHIEL           35
142 #define ART_THRANDUIL           36
143 #define ART_THENGEL             37
144 #define ART_HAMMERHAND          38
145 #define ART_DOR                 39
146 #define ART_HOLHENNETH          40
147 #define ART_TERROR              41
148 #define ART_AMBER               42
149 #define ART_NUMENOR             132
150 #define ART_STONEMASK           146
151
152 /* Cloaks */
153 #define ART_JACK                43
154 #define ART_COLLUIN             44
155 #define ART_HOLCOLLETH          45
156 #define ART_THINGOL             46
157 #define ART_THORONGIL           47
158 #define ART_COLANNON            48
159 #define ART_LUTHIEN             49
160 #define ART_TUOR                50
161 #define ART_MOOK                205
162 #define ART_HEAVENLY_MAIDEN     233
163
164 /* Gloves */
165 #define ART_CAMBELEG            52
166 #define ART_CAMMITHRIM          53
167 #define ART_PAURHACH            54
168 #define ART_CORWIN              55
169 #define ART_PAURAEGEN           56
170 #define ART_PAURNEN             57
171 #define ART_THANOS              58
172 #define ART_FINGOLFIN           59
173 #define ART_PAURNIMMEN          185
174
175 /* Boots */
176 #define ART_FEANOR              60
177 #define ART_FLORA               61
178 #define ART_THROR               62
179 #define ART_SHIVA_BOOTS         63
180 #define ART_GLASS               165
181 #define ART_GETA                210
182
183 /* Digging */
184 #define ART_NAIN                211
185
186 /* Swords */
187 #define ART_MAEDHROS            64
188 #define ART_CAINE               65
189 #define ART_NARTHANC            66
190 #define ART_NIMTHANC            67
191 #define ART_DETHANC             68
192 #define ART_RILIA               69
193 #define ART_FIONA               70
194 #define ART_CALRIS              71
195 #define ART_GRAYSWANDIR         72
196 #define ART_GLAMDRING           73
197 #define ART_NOTHUNG             74
198 #define ART_ORCRIST             75
199 #define ART_GURTHANG            76
200 #define ART_ZARCUTHRA           77
201 #define ART_TWILIGHT            78
202 #define ART_GONDRICAM           79
203 #define ART_CRISDURIAN          80
204 #define ART_AGLARANG            81
205 #define ART_RINGIL              82
206 #define ART_ANDURIL             83
207 #define ART_WEREWINDLE          84
208 #define ART_CHAINSWORD          85
209 #define ART_FORASGIL            86
210 #define ART_CARETH              87
211 #define ART_STING               88
212 #define ART_SOULSWORD           89
213 #define ART_MERLIN              90
214 #define ART_DOOMCALLER          91
215 #define ART_VORPAL_BLADE        92
216 #define ART_SLAYER              123
217 #define ART_KUSANAGI            128
218 #define ART_HURIN               133
219 #define ART_AZAGHAL             135
220 #define ART_NOVA                137
221 #define ART_CHARIOT             140
222 #define ART_WORPAL_BLADE        142
223 #define ART_MURAMASA            144
224 #define ART_ZANTETSU            150
225 #define ART_SOULCRUSH           154
226 #define ART_FALIS               155
227 #define ART_HRUNTING            156
228 #define ART_ANUBIS              158
229 #define ART_GURENKI             160
230 #define ART_TAILBITER           167
231 #define ART_MUSASI_KATANA       171
232 #define ART_MUSASI_WAKIZASI     172
233 #define ART_QUICKTHORN          174
234 #define ART_TINYTHORN           175
235 #define ART_EXCALIBUR           176
236 #define ART_EXCALIPUR           177
237 #define ART_EXCALIBUR_J         179
238 #define ART_ARUNRUTH            184
239 #define ART_HAKABUSA            189
240 #define ART_STORMBRINGER        190
241 #define ART_NARSIL              191
242 #define ART_KANNU               193
243 #define ART_GRIMTOOTH           196
244 #define ART_KAMUI               198
245 #define ART_GOURYU              207
246 #define ART_EOWYN               216
247 #define ART_NANACHO             248
248 #define ART_ROBINTON            251
249
250 /* Polearms */
251 #define ART_THEODEN             93
252 #define ART_PAIN                94
253 #define ART_OSONDIR             95
254 #define ART_TIL                 96
255 #define ART_RUNESPEAR           97
256 #define ART_DESTINY             98
257 #define ART_HAGEN               99
258 #define ART_EORLINGAS           100
259 #define ART_DURIN               101
260 #define ART_EONWE               102
261 #define ART_BALLI               103
262 #define ART_LOTHARANG           104
263 #define ART_DWARVES_AXE         105
264 #define ART_BARUKKHELED         106
265 #define ART_WRATH               107
266 #define ART_ULMO                108
267 #define ART_AVAVIR              109
268 #define ART_BENKEI              152
269 #define ART_TAIKOBO             159
270 #define ART_TONBO               161
271 #define ART_GAEBOLG             163
272 #define ART_ARRYU               164
273 #define ART_AEGLOS              187
274 #define ART_BLOOD               199
275 #define ART_NUMAHOKO            202
276
277 /* The sword of the Dawn */
278 #define ART_DAWN                110
279
280 /* Hafted */
281 #define ART_GROND               111
282 #define ART_TOTILA              112
283 #define ART_THUNDERFIST         113
284 #define ART_BLOODSPIKE          114
285 #define ART_FIRESTAR            115
286 #define ART_TARATOL             116
287 #define ART_AULE                117
288 #define ART_NAR                 118
289 #define ART_ERIRIL              119
290 #define ART_GANDALF             120
291 #define ART_DEATHWREAKER        121
292 #define ART_TURMIL              122
293 #define ART_MJOLLNIR            136
294 #define ART_WINBLOWS            139
295 #define ART_XIAOLONG            145
296 #define ART_NYOIBOU             157
297 #define ART_JONES               162
298 #define ART_HYOUSIGI            169
299 #define ART_MATOI               170
300 #define ART_IRON_BALL           173
301 #define ART_SAMSON              178
302 #define ART_NAMAKE_HAMMER       181
303 #define ART_BOLISHOI            188
304 #define ART_SHUTEN_DOJI         194
305 #define ART_G_HAMMER            195
306 #define ART_AEGISFANG           208
307 #define ART_HERMIT              209
308 #define ART_GOTHMOG             212
309 #define ART_JIZO                213
310 #define ART_FUNDIN              214
311 #define ART_AESCULAPIUS         225
312
313 /* Bows */
314 #define ART_BELTHRONDING        124
315 #define ART_BARD                125
316 #define ART_BRAND               126
317 #define ART_CRIMSON             16
318 #define ART_BUCKLAND            134
319 #define ART_YOICHI              148
320 #define ART_HARAD               180
321 #define ART_NAMAKE_BOW          182
322 #define ART_ROBIN_HOOD          221
323 #define ART_HELLFIRE            222
324
325 /* Arrows */
326 #define ART_BARD_ARROW          153
327
328
329 /* "Biases" for random artifact gen */
330 #define BIAS_ELEC            1 /*!< ランダムアーティファクトバイアス:電撃 */
331 #define BIAS_POIS            2 /*!< ランダムアーティファクトバイアス:毒 */
332 #define BIAS_FIRE            3 /*!< ランダムアーティファクトバイアス:火炎 */
333 #define BIAS_COLD            4 /*!< ランダムアーティファクトバイアス:冷気 */
334 #define BIAS_ACID            5 /*!< ランダムアーティファクトバイアス:酸 */
335 #define BIAS_STR             6 /*!< ランダムアーティファクトバイアス:腕力 */
336 #define BIAS_INT             7 /*!< ランダムアーティファクトバイアス:知力 */
337 #define BIAS_WIS             8 /*!< ランダムアーティファクトバイアス:賢さ */
338 #define BIAS_DEX             9 /*!< ランダムアーティファクトバイアス:器用さ */
339 #define BIAS_CON            10 /*!< ランダムアーティファクトバイアス:耐久 */
340 #define BIAS_CHR            11 /*!< ランダムアーティファクトバイアス:魅力 */
341 #define BIAS_CHAOS          12 /*!< ランダムアーティファクトバイアス:混沌 */
342 #define BIAS_PRIESTLY       13 /*!< ランダムアーティファクトバイアス:プリースト系 */
343 #define BIAS_NECROMANTIC    14 /*!< ランダムアーティファクトバイアス:死霊 */
344 #define BIAS_LAW            15 /*!< ランダムアーティファクトバイアス:法 */
345 #define BIAS_ROGUE          16 /*!< ランダムアーティファクトバイアス:盗賊系 */
346 #define BIAS_MAGE           17 /*!< ランダムアーティファクトバイアス:メイジ系 */
347 #define BIAS_WARRIOR        18 /*!< ランダムアーティファクトバイアス:戦士系 */
348 #define BIAS_RANGER         19 /*!< ランダムアーティファクトバイアス:レンジャー系 */
349 #define MAX_BIAS            20 /*!< ランダムアーティファクトバイアス:最大数 */