OSDN Git Service

[fix] #41503 超能力者でゲームを開始しようとするとクラッシュ
[hengband/hengband.git] / src / object-enchant / object-ego.h
1 #pragma once
2
3 #include "system/angband.h"
4 #include "system/object-type-definition.h"
5
6 /* Body Armor */
7 #define EGO_A_MORGUL            4
8 #define EGO_A_DEMON             5
9 #define EGO_DRUID               6
10 #define EGO_OLOG                7
11 #define EGO_RESISTANCE          8
12 #define EGO_ELVENKIND           9
13 #define EGO_DWARVEN             10
14 #define EGO_PERMANENCE          11
15 #define EGO_YOIYAMI             12
16 #define EGO_URUKISH             13
17
18 /* Shields */
19 #define EGO_ENDURE_ACID         16
20 #define EGO_ENDURE_ELEC         17
21 #define EGO_ENDURE_FIRE         18
22 #define EGO_ENDURE_COLD         19
23 #define EGO_ENDURANCE           20
24 #define EGO_REFLECTION          21
25 #define EGO_NIGHT_DAY           22
26 #define EGO_S_PROTECTION        238
27 #define EGO_S_DWARVEN           239
28
29 /* Crowns and Helms */
30 #define EGO_DARK                23
31 #define EGO_BRILLIANCE          24
32 #define EGO_H_PROTECTION        25
33 #define EGO_H_DEMON             26
34 #define EGO_MAGI                27
35 #define EGO_MIGHT               28
36 #define EGO_LORDLINESS          29
37 #define EGO_SEEING              30
38 #define EGO_INFRAVISION         31
39 #define EGO_LITE                32
40 #define EGO_TELEPATHY           33
41 #define EGO_REGENERATION        34
42 #define EGO_TELEPORTATION       35
43 #define EGO_FOOL                36
44 #define EGO_BASILISK            37
45 #define EGO_ANCIENT_CURSE       38
46 #define EGO_SICKLINESS          39
47
48 /* Cloaks */
49 #define EGO_PROTECTION          40
50 #define EGO_STEALTH             41
51 #define EGO_AMAN                42
52 #define EGO_AURA_FIRE           43
53 #define EGO_ENVELOPING          44
54 #define EGO_VULNERABILITY       45
55 #define EGO_IRRITATION          46
56 #define EGO_AURA_ELEC           47
57 #define EGO_AURA_COLD          128
58 #define EGO_BAT                129
59 #define EGO_NAZGUL             240
60
61 /* Gloves */
62 #define EGO_FREE_ACTION         48
63 #define EGO_SLAYING             49
64 #define EGO_AGILITY             50
65 #define EGO_POWER               51
66 #define EGO_2WEAPON             52
67 #define EGO_MAGIC_MASTERY       53
68 #define EGO_WEAKNESS            54
69 #define EGO_CLUMSINESS          55
70
71 /* Boots */
72 #define EGO_SLOW_DESCENT        56
73 #define EGO_QUIET               57
74 #define EGO_MOTION              58
75 #define EGO_SPEED               59
76 #define EGO_JUMP                60
77 #define EGO_NOISE               61
78 #define EGO_SLOWNESS            62
79 #define EGO_ANNOYANCE           63
80
81 /* Weapons */
82 #define EGO_HA                  64
83 #define EGO_DF                  65
84 #define EGO_BLESS_BLADE         66
85 #define EGO_WEST                68
86 #define EGO_ATTACKS             69
87 #define EGO_SLAYING_WEAPON      70
88 #define EGO_FORCE_WEAPON        71
89 #define EGO_BRAND_ACID          72
90 #define EGO_BRAND_ELEC          73
91 #define EGO_BRAND_FIRE          74
92 #define EGO_BRAND_COLD          75
93 #define EGO_BRAND_POIS          76
94 #define EGO_CHAOTIC             77
95 #define EGO_SHARPNESS           78
96 #define EGO_EARTHQUAKES         79
97 #define EGO_WEIRD               87
98 #define EGO_KILL_ANIMAL         88
99 #define EGO_KILL_EVIL           89
100 #define EGO_KILL_UNDEAD         90
101 #define EGO_KILL_DEMON          91
102 #define EGO_KILL_ORC            92
103 #define EGO_KILL_TROLL          93
104 #define EGO_KILL_GIANT          94
105 #define EGO_KILL_DRAGON         95
106 #define EGO_VAMPIRIC            96
107 #define EGO_PRISM               97
108 #define EGO_TRUMP               98
109 #define EGO_PATTERN             99
110 #define EGO_DIGGING             100
111 #define EGO_DEMON               101
112 #define EGO_MORGUL              102
113 #define EGO_KILL_HUMAN          103
114
115 /* Bows */
116 #define EGO_ACCURACY            104
117 #define EGO_VELOCITY            105
118 #define EGO_EXTRA_MIGHT         108
119 #define EGO_EXTRA_SHOTS         109
120
121 /* Ammo */
122 #define EGO_HURT_ANIMAL         112
123 #define EGO_HURT_EVIL           113
124 #define EGO_HURT_DRAGON         119
125 #define EGO_SLAYING_BOLT        120
126 #define EGO_LIGHTNING_BOLT      121
127 #define EGO_FLAME               122
128 #define EGO_FROST               123
129 #define EGO_WOUNDING            124
130 #define EGO_BACKBITING          125
131 #define EGO_SHATTERED           126
132 #define EGO_BLASTED             127
133
134 /* Lite */
135 #define EGO_LITE_SHINE          140
136 #define EGO_LITE_ILLUMINATION   141
137 #define EGO_LITE_AURA_FIRE      142
138 #define EGO_LITE_INFRA          143
139 #define EGO_LITE_LONG           144
140 #define EGO_LITE_DARKNESS       145
141 #define EGO_LITE_EYE            146
142
143 /* Ring */
144 #define EGO_RING_HERO           150
145 #define EGO_RING_SLAY           151
146 #define EGO_RING_SUPER_AC       152
147 #define EGO_RING_MAGIC_MIS      153
148 #define EGO_RING_FIRE_BOLT      154
149 #define EGO_RING_COLD_BOLT      155
150 #define EGO_RING_ELEC_BOLT      156
151 #define EGO_RING_ACID_BOLT      157
152 #define EGO_RING_MANA_BOLT      158
153 #define EGO_RING_FIRE_BALL      159
154 #define EGO_RING_COLD_BALL      160
155 #define EGO_RING_ELEC_BALL      161
156 #define EGO_RING_ACID_BALL      162
157 #define EGO_RING_MANA_BALL      163
158 #define EGO_RING_DRAGON_F       164
159 #define EGO_RING_DRAGON_C       165
160 #define EGO_RING_D_SPEED        166
161 #define EGO_RING_BERSERKER      167
162 #define EGO_RING_HUNTER         168
163 #define EGO_RING_THROW          169
164 #define EGO_RING_REGEN          170
165 #define EGO_RING_LITE           171
166 #define EGO_RING_M_DETECT       172
167 #define EGO_RING_STEALTH        173
168 #define EGO_RING_TELE_AWAY      174
169 #define EGO_RING_TO_H           175
170 #define EGO_RING_TO_D           176
171 #define EGO_RING_RES_LITE       177
172 #define EGO_RING_RES_DARK       178
173 #define EGO_RING_WIZARD         179
174 #define EGO_RING_TRUE           180
175 #define EGO_RING_DRAIN_EXP      181
176 #define EGO_RING_NO_MELEE       182
177 #define EGO_RING_AGGRAVATE      183
178 #define EGO_RING_TY_CURSE       184
179 #define EGO_RING_RES_TIME       185
180 #define EGO_RING_TELEPORT       186
181 #define EGO_RING_ALBINO         187
182
183 /* Amulet */
184 #define EGO_AMU_SLOW_D          210
185 #define EGO_AMU_INFRA           211
186 #define EGO_AMU_SEE_INVIS       212
187 #define EGO_AMU_HOLD_EXP        213
188 #define EGO_AMU_DRAIN_EXP       214
189 #define EGO_AMU_FOOL            215
190 #define EGO_AMU_AGGRAVATE       216
191 #define EGO_AMU_TY_CURSE        217
192 #define EGO_AMU_AC              218
193 #define EGO_AMU_IDENT           219
194 #define EGO_AMU_CHARM           220
195 #define EGO_AMU_STEALTH         221
196 #define EGO_AMU_JUMP            222
197 #define EGO_AMU_TELEPORT        223
198 #define EGO_AMU_D_DOOR          224
199 #define EGO_AMU_DEFENDER        225
200 #define EGO_AMU_RES_FIRE        226
201 #define EGO_AMU_RES_FIRE_       227
202 #define EGO_AMU_RES_COLD        228
203 #define EGO_AMU_RES_COLD_       229
204 #define EGO_AMU_RES_ELEC        230
205 #define EGO_AMU_RES_ELEC_       231
206 #define EGO_AMU_RES_ACID        232
207 #define EGO_AMU_RES_ACID_       233
208 #define EGO_AMU_LEVITATION      234
209 #define EGO_AMU_GREAT           235
210 #define EGO_AMU_DETECTION       236
211 #define EGO_AMU_NAIVETY         237
212 // MAX 240
213
214 /*
215  * Information about "ego-items".
216  */
217 typedef struct ego_item_type {
218         STR_OFFSET name;                        /* Name (offset) */
219         STR_OFFSET text;                        /* Text (offset) */
220
221         INVENTORY_IDX slot;             /*!< 装備部位 / Standard slot value */
222         PRICE rating;           /*!< ベースアイテムからの価値加速 / Rating boost */
223
224         DEPTH level;                    /* Minimum level */
225         RARITY rarity;          /* Object rarity */
226
227         HIT_PROB max_to_h;              /* Maximum to-hit bonus */
228         HIT_POINT max_to_d;             /* Maximum to-dam bonus */
229         ARMOUR_CLASS max_to_a;          /* Maximum to-ac bonus */
230
231         PARAMETER_VALUE max_pval;               /* Maximum pval */
232
233         PRICE cost;                     /* Ego-item "cost" */
234
235         BIT_FLAGS flags[TR_FLAG_SIZE];  /* Ego-Item Flags */
236         BIT_FLAGS gen_flags;            /* flags for generate */
237
238         IDX act_idx;            /* Activative ability index */
239 } ego_item_type;
240
241 extern EGO_IDX max_e_idx;
242 extern ego_item_type *e_info;
243 extern char *e_name;
244 extern char *e_text;
245
246 byte get_random_ego(byte slot, bool good);