3 #include "system/angband.h"
5 #include "object-enchant/tr-types.h"
6 #include "object-enchant/trg-types.h"
7 #include "system/object-type-definition.h"
8 #include "util/flag-group.h"
14 #define EGO_A_MORGUL 4
18 #define EGO_RESISTANCE 8
19 #define EGO_ELVENKIND 9
20 #define EGO_DWARVEN 10
21 #define EGO_PERMANENCE 11
22 #define EGO_YOIYAMI 12
23 #define EGO_URUKISH 13
26 #define EGO_ENDURE_ACID 16
27 #define EGO_ENDURE_ELEC 17
28 #define EGO_ENDURE_FIRE 18
29 #define EGO_ENDURE_COLD 19
30 #define EGO_ENDURANCE 20
31 #define EGO_REFLECTION 21
32 #define EGO_NIGHT_DAY 22
33 #define EGO_S_PROTECTION 238
34 #define EGO_S_DWARVEN 239
36 /* Crowns and Helms */
38 #define EGO_BRILLIANCE 24
39 #define EGO_H_PROTECTION 25
40 #define EGO_H_DEMON 26
43 #define EGO_LORDLINESS 29
45 #define EGO_INFRAVISION 31
47 #define EGO_TELEPATHY 33
48 #define EGO_REGENERATION 34
49 #define EGO_TELEPORTATION 35
51 #define EGO_BASILISK 37
52 #define EGO_ANCIENT_CURSE 38
53 #define EGO_SICKLINESS 39
56 #define EGO_PROTECTION 40
57 #define EGO_STEALTH 41
59 #define EGO_AURA_FIRE 43
60 #define EGO_ENVELOPING 44
61 #define EGO_VULNERABILITY 45
62 #define EGO_IRRITATION 46
63 #define EGO_AURA_ELEC 47
64 #define EGO_AURA_COLD 128
66 #define EGO_NAZGUL 240
69 #define EGO_FREE_ACTION 48
70 #define EGO_SLAYING 49
71 #define EGO_AGILITY 50
73 #define EGO_2WEAPON 52
74 #define EGO_MAGIC_MASTERY 53
75 #define EGO_WEAKNESS 54
76 #define EGO_CLUMSINESS 55
79 #define EGO_SLOW_DESCENT 56
85 #define EGO_SLOWNESS 62
86 #define EGO_ANNOYANCE 63
91 #define EGO_BLESS_BLADE 66
93 #define EGO_ATTACKS 69
94 #define EGO_SLAYING_WEAPON 70
95 #define EGO_FORCE_WEAPON 71
96 #define EGO_BRAND_ACID 72
97 #define EGO_BRAND_ELEC 73
98 #define EGO_BRAND_FIRE 74
99 #define EGO_BRAND_COLD 75
100 #define EGO_BRAND_POIS 76
101 #define EGO_CHAOTIC 77
102 #define EGO_SHARPNESS 78
103 #define EGO_EARTHQUAKES 79
104 #define EGO_W_FAIRLY 83
105 #define EGO_W_OMNIVOROUS 84
106 #define EGO_W_DARK_REVENGER 85
107 #define EGO_KILL_GOOD 86
109 #define EGO_KILL_ANIMAL 88
110 #define EGO_KILL_EVIL 89
111 #define EGO_KILL_UNDEAD 90
112 #define EGO_KILL_DEMON 91
113 #define EGO_KILL_ORC 92
114 #define EGO_KILL_TROLL 93
115 #define EGO_KILL_GIANT 94
116 #define EGO_KILL_DRAGON 95
117 #define EGO_VAMPIRIC 96
120 #define EGO_PATTERN 99
121 #define EGO_DIGGING 100
122 #define EGO_DEMON 101
123 #define EGO_MORGUL 102
124 #define EGO_KILL_HUMAN 103
127 #define EGO_ACCURACY 104
128 #define EGO_VELOCITY 105
129 #define EGO_EXTRA_MIGHT 108
130 #define EGO_EXTRA_SHOTS 109
133 #define EGO_HURT_ANIMAL 112
134 #define EGO_HURT_EVIL 113
135 #define EGO_HURT_DRAGON 119
136 #define EGO_SLAYING_BOLT 120
137 #define EGO_LIGHTNING_BOLT 121
138 #define EGO_FLAME 122
139 #define EGO_FROST 123
140 #define EGO_WOUNDING 124
141 #define EGO_BACKBITING 125
142 #define EGO_SHATTERED 126
143 #define EGO_BLASTED 127
146 #define EGO_LITE_SHINE 140
147 #define EGO_LITE_ILLUMINATION 141
148 #define EGO_LITE_AURA_FIRE 142
149 #define EGO_LITE_INFRA 143
150 #define EGO_LITE_LONG 144
151 #define EGO_LITE_DARKNESS 145
152 #define EGO_LITE_EYE 146
155 #define EGO_RING_HERO 150
156 #define EGO_RING_SLAY 151
157 #define EGO_RING_SUPER_AC 152
158 #define EGO_RING_MAGIC_MIS 153
159 #define EGO_RING_FIRE_BOLT 154
160 #define EGO_RING_COLD_BOLT 155
161 #define EGO_RING_ELEC_BOLT 156
162 #define EGO_RING_ACID_BOLT 157
163 #define EGO_RING_MANA_BOLT 158
164 #define EGO_RING_FIRE_BALL 159
165 #define EGO_RING_COLD_BALL 160
166 #define EGO_RING_ELEC_BALL 161
167 #define EGO_RING_ACID_BALL 162
168 #define EGO_RING_MANA_BALL 163
169 #define EGO_RING_DRAGON_F 164
170 #define EGO_RING_DRAGON_C 165
171 #define EGO_RING_D_SPEED 166
172 #define EGO_RING_BERSERKER 167
173 #define EGO_RING_HUNTER 168
174 #define EGO_RING_THROW 169
175 #define EGO_RING_REGEN 170
176 #define EGO_RING_LITE 171
177 #define EGO_RING_M_DETECT 172
178 #define EGO_RING_STEALTH 173
179 #define EGO_RING_TELE_AWAY 174
180 #define EGO_RING_TO_H 175
181 #define EGO_RING_TO_D 176
182 #define EGO_RING_RES_LITE 177
183 #define EGO_RING_RES_DARK 178
184 #define EGO_RING_WIZARD 179
185 #define EGO_RING_TRUE 180
186 #define EGO_RING_DRAIN_EXP 181
187 #define EGO_RING_NO_MELEE 182
188 #define EGO_RING_AGGRAVATE 183
189 #define EGO_RING_TY_CURSE 184
190 #define EGO_RING_RES_TIME 185
191 #define EGO_RING_TELEPORT 186
192 #define EGO_RING_ALBINO 187
195 #define EGO_AMU_SLOW_D 210
196 #define EGO_AMU_INFRA 211
197 #define EGO_AMU_SEE_INVIS 212
198 #define EGO_AMU_HOLD_EXP 213
199 #define EGO_AMU_DRAIN_EXP 214
200 #define EGO_AMU_FOOL 215
201 #define EGO_AMU_AGGRAVATE 216
202 #define EGO_AMU_TY_CURSE 217
203 #define EGO_AMU_AC 218
204 #define EGO_AMU_IDENT 219
205 #define EGO_AMU_CHARM 220
206 #define EGO_AMU_STEALTH 221
207 #define EGO_AMU_JUMP 222
208 #define EGO_AMU_TELEPORT 223
209 #define EGO_AMU_D_DOOR 224
210 #define EGO_AMU_DEFENDER 225
211 #define EGO_AMU_RES_FIRE 226
212 #define EGO_AMU_RES_FIRE_ 227
213 #define EGO_AMU_RES_COLD 228
214 #define EGO_AMU_RES_COLD_ 229
215 #define EGO_AMU_RES_ELEC 230
216 #define EGO_AMU_RES_ELEC_ 231
217 #define EGO_AMU_RES_ACID 232
218 #define EGO_AMU_RES_ACID_ 233
219 #define EGO_AMU_LEVITATION 234
220 #define EGO_AMU_GREAT 235
221 #define EGO_AMU_DETECTION 236
222 #define EGO_AMU_NAIVETY 237
225 struct ego_generate_type {
228 std::vector<tr_type> tr_flags{};
229 std::vector<TRG> trg_flags{};
233 * Information about "ego-items".
235 struct ego_item_type {
236 std::string name; //!< エゴの名前
237 std::string text; //!< フレーバーテキスト
239 INVENTORY_IDX slot{}; //!< 装備部位 / Standard slot value
240 PRICE rating{}; //!< レーティングボーナス(雰囲気に影響) / Rating boost
242 DEPTH level{}; //!< 生成レベル
243 RARITY rarity{}; //<! レアリティ
245 HIT_PROB base_to_h{}; //!< ベース命中修正
246 HIT_POINT base_to_d{}; //!< べ^スダメージ修正
247 ARMOUR_CLASS base_to_a{}; //!< ベースAC修正
249 HIT_PROB max_to_h{}; //!< 最大ボーナス命中修正
250 HIT_POINT max_to_d{}; //!< 最大ボーナスダメージ修正
251 ARMOUR_CLASS max_to_a{}; //!< 最大ボーナスAC修正
253 PARAMETER_VALUE max_pval{}; //!< 最大pval
255 PRICE cost{}; //!< コスト
257 BIT_FLAGS flags[TR_FLAG_SIZE]{}; //!< 能力/耐性フラグ
258 EnumClassFlagGroup<TRG> gen_flags; //!< 生成時適用フラグ
259 std::vector<ego_generate_type> xtra_flags{}; //!< 追加能力/耐性フラグ
261 IDX act_idx{}; //!< 発動番号 / Activative ability index
264 extern EGO_IDX max_e_idx;
265 extern std::vector<ego_item_type> e_info;
267 byte get_random_ego(byte slot, bool good);
268 void apply_ego(player_type *player_ptr, object_type *o_ptr, DEPTH lev);