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