OSDN Git Service

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