7 #include "object-enchant/object-ego.h"
8 #include "object-enchant/tr-flags.h"
9 #include "object-enchant/tr-types.h"
10 #include "object-enchant/trg-types.h"
11 #include "system/angband.h"
12 #include "util/flag-group.h"
40 /* Crowns and Helms */
110 W_DARK_REVENGER = 85,
141 LIGHTNING_BOLT = 121,
151 LITE_ILLUMINATION = 141,
152 LITE_AURA_FIRE = 142,
162 RING_MAGIC_MIS = 153,
163 RING_FIRE_BOLT = 154,
164 RING_COLD_BOLT = 155,
165 RING_ELEC_BOLT = 156,
166 RING_ACID_BOLT = 157,
167 RING_MANA_BOLT = 158,
168 RING_FIRE_BALL = 159,
169 RING_COLD_BALL = 160,
170 RING_ELEC_BALL = 161,
171 RING_ACID_BALL = 162,
172 RING_MANA_BALL = 163,
176 RING_BERSERKER = 167,
183 RING_TELE_AWAY = 174,
190 RING_DRAIN_EXP = 181,
192 RING_AGGRAVATE = 183,
223 AMU_LEVITATION = 234,
231 struct ego_generate_type {
234 std::vector<tr_type> tr_flags{};
235 std::vector<ItemGenerationTraitType> trg_flags{};
239 * Information about "ego-items".
241 enum class RandomArtActType : short;
242 class EgoItemDefinition {
244 EgoItemDefinition() = default;
247 std::string name; //!< エゴの名前
248 std::string text; //!< フレーバーテキスト
250 INVENTORY_IDX slot{}; //!< 装備部位 / Standard slot value
251 PRICE rating{}; //!< レーティングボーナス(雰囲気に影響) / Rating boost
253 DEPTH level{}; //!< 生成レベル
254 RARITY rarity{}; //<! レアリティ
256 HIT_PROB base_to_h{}; //!< ベース命中修正
257 int base_to_d{}; //!< べ^スダメージ修正
258 ARMOUR_CLASS base_to_a{}; //!< ベースAC修正
260 HIT_PROB max_to_h{}; //!< 最大ボーナス命中修正
261 int max_to_d{}; //!< 最大ボーナスダメージ修正
262 ARMOUR_CLASS max_to_a{}; //!< 最大ボーナスAC修正
264 PARAMETER_VALUE max_pval{}; //!< 最大pval
266 PRICE cost{}; //!< コスト
268 TrFlags flags{}; //!< 能力/耐性フラグ
269 EnumClassFlagGroup<ItemGenerationTraitType> gen_flags; //!< 生成時適用フラグ
270 std::vector<ego_generate_type> xtra_flags{}; //!< 追加能力/耐性フラグ
272 RandomArtActType act_idx{}; //!< 発動番号 / Activative ability index
275 extern std::map<EgoType, EgoItemDefinition> egos_info;
279 EgoType get_random_ego(byte slot, bool good);
280 void apply_ego(ItemEntity *o_ptr, DEPTH lev);