OSDN Git Service

Merge pull request #3569 from sikabane-works/release/3.0.0.88-alpha
[hengbandforosx/hengbandosx.git] / src / smith / smith-tables.cpp
1 #include "smith/smith-tables.h"
2 #include "artifact/random-art-effects.h"
3 #include "object-enchant/tr-flags.h"
4 #include "object-enchant/tr-types.h"
5 #include "smith/object-smith.h"
6 #include "smith/smith-info.h"
7 #include "smith/smith-types.h"
8
9 #include <memory>
10 #include <unordered_map>
11 #include <vector>
12
13 /*!
14  * @brief エッセンスの順序リスト。エッセンスの表示順等で使用する。
15  */
16 const std::vector<SmithEssenceType> Smith::essence_list_order = {
17     SmithEssenceType::STR,
18     SmithEssenceType::INT,
19     SmithEssenceType::WIS,
20     SmithEssenceType::DEX,
21     SmithEssenceType::CON,
22     SmithEssenceType::CHR,
23
24     SmithEssenceType::SUST_STATUS,
25
26     SmithEssenceType::MAGIC_MASTERY,
27     SmithEssenceType::STEALTH,
28     SmithEssenceType::SEARCH,
29     SmithEssenceType::INFRA,
30     SmithEssenceType::TUNNEL,
31     SmithEssenceType::SPEED,
32     SmithEssenceType::BLOWS,
33
34     SmithEssenceType::CHAOTIC,
35     SmithEssenceType::VAMPIRIC,
36     SmithEssenceType::EATHQUAKE,
37     SmithEssenceType::BRAND_POIS,
38     SmithEssenceType::BRAND_ACID,
39     SmithEssenceType::BRAND_ELEC,
40     SmithEssenceType::BRAND_FIRE,
41     SmithEssenceType::BRAND_COLD,
42     SmithEssenceType::BRAND_MAGIC,
43
44     SmithEssenceType::IMMUNITY,
45     SmithEssenceType::REFLECT,
46
47     SmithEssenceType::RES_ACID,
48     SmithEssenceType::RES_ELEC,
49     SmithEssenceType::RES_FIRE,
50     SmithEssenceType::RES_COLD,
51     SmithEssenceType::RES_POIS,
52     SmithEssenceType::RES_FEAR,
53     SmithEssenceType::RES_LITE,
54     SmithEssenceType::RES_DARK,
55     SmithEssenceType::RES_BLIND,
56     SmithEssenceType::RES_CONF,
57     SmithEssenceType::RES_SOUND,
58     SmithEssenceType::RES_SHARDS,
59     SmithEssenceType::RES_NETHER,
60     SmithEssenceType::RES_NEXUS,
61     SmithEssenceType::RES_CHAOS,
62     SmithEssenceType::RES_DISEN,
63     SmithEssenceType::RES_WATER,
64     SmithEssenceType::RES_TIME,
65     SmithEssenceType::RES_CURSE,
66
67     SmithEssenceType::HOLD_EXP,
68     SmithEssenceType::FREE_ACT,
69     SmithEssenceType::WARNING,
70     SmithEssenceType::LEVITATION,
71     SmithEssenceType::SEE_INVIS,
72     SmithEssenceType::SLOW_DIGEST,
73     SmithEssenceType::REGEN,
74     SmithEssenceType::TELEPORT,
75     SmithEssenceType::NO_MAGIC,
76     SmithEssenceType::LITE,
77     SmithEssenceType::NO_TELE,
78     SmithEssenceType::TELEPATHY,
79
80     SmithEssenceType::SLAY_EVIL,
81     SmithEssenceType::SLAY_ANIMAL,
82     SmithEssenceType::SLAY_UNDEAD,
83     SmithEssenceType::SLAY_DEMON,
84     SmithEssenceType::SLAY_ORC,
85     SmithEssenceType::SLAY_TROLL,
86     SmithEssenceType::SLAY_GIANT,
87     SmithEssenceType::SLAY_DRAGON,
88     SmithEssenceType::SLAY_HUMAN,
89     SmithEssenceType::SLAY_GOOD,
90
91     SmithEssenceType::EASY2_WEAPON,
92     SmithEssenceType::STRENGTHEN_BOW,
93     SmithEssenceType::UNIQUE,
94
95     SmithEssenceType::ATTACK,
96     SmithEssenceType::AC,
97 };
98
99 /*!
100  * @brief SmithEssence からエッセンスの表記名を引く連想配列
101  */
102 const std::unordered_map<SmithEssenceType, concptr> Smith::essence_to_name = {
103     { SmithEssenceType::STR, _("腕力", "strength") },
104     { SmithEssenceType::INT, _("知能", "intelligen.") },
105     { SmithEssenceType::WIS, _("賢さ", "wisdom") },
106     { SmithEssenceType::DEX, _("器用さ", "dexterity") },
107     { SmithEssenceType::CON, _("耐久力", "constitut.") },
108     { SmithEssenceType::CHR, _("魅力", "charisma") },
109
110     { SmithEssenceType::SUST_STATUS, _("能力維持", "sustain") },
111
112     { SmithEssenceType::MAGIC_MASTERY, _("魔力支配", "magic mast.") },
113     { SmithEssenceType::STEALTH, _("隠密", "stealth") },
114     { SmithEssenceType::SEARCH, _("探索", "searching") },
115     { SmithEssenceType::INFRA, _("赤外線視力", "infravision") },
116     { SmithEssenceType::TUNNEL, _("採掘", "digging") },
117     { SmithEssenceType::SPEED, _("スピード", "speed") },
118     { SmithEssenceType::BLOWS, _("追加攻撃", "extra atk") },
119
120     { SmithEssenceType::CHAOTIC, _("カオス攻撃", "chaos brand") },
121     { SmithEssenceType::VAMPIRIC, _("吸血攻撃", "vampiric") },
122     { SmithEssenceType::EATHQUAKE, _("地震", "quake") },
123     { SmithEssenceType::BRAND_POIS, _("毒殺", "pois. brand") },
124     { SmithEssenceType::BRAND_ACID, _("溶解", "acid brand") },
125     { SmithEssenceType::BRAND_ELEC, _("電撃", "elec. brand") },
126     { SmithEssenceType::BRAND_FIRE, _("焼棄", "fire brand") },
127     { SmithEssenceType::BRAND_COLD, _("凍結", "cold brand") },
128     { SmithEssenceType::BRAND_MAGIC, _("魔術", "magic brand") },
129
130     { SmithEssenceType::IMMUNITY, _("免疫", "immunity") },
131     { SmithEssenceType::REFLECT, _("反射", "reflection") },
132
133     { SmithEssenceType::RES_ACID, _("耐酸", "res. acid") },
134     { SmithEssenceType::RES_ELEC, _("耐電撃", "res. elec.") },
135     { SmithEssenceType::RES_FIRE, _("耐火炎", "res. fire") },
136     { SmithEssenceType::RES_COLD, _("耐冷気", "res. cold") },
137     { SmithEssenceType::RES_POIS, _("耐毒", "res. poison") },
138     { SmithEssenceType::RES_FEAR, _("耐恐怖", "res. fear") },
139     { SmithEssenceType::RES_LITE, _("耐閃光", "res. light") },
140     { SmithEssenceType::RES_DARK, _("耐暗黒", "res. dark") },
141     { SmithEssenceType::RES_BLIND, _("耐盲目", "res. blind") },
142     { SmithEssenceType::RES_CONF, _("耐混乱", "res.confuse") },
143     { SmithEssenceType::RES_SOUND, _("耐轟音", "res. sound") },
144     { SmithEssenceType::RES_SHARDS, _("耐破片", "res. shard") },
145     { SmithEssenceType::RES_NETHER, _("耐地獄", "res. nether") },
146     { SmithEssenceType::RES_NEXUS, _("耐因果混乱", "res. nexus") },
147     { SmithEssenceType::RES_CHAOS, _("耐カオス", "res. chaos") },
148     { SmithEssenceType::RES_DISEN, _("耐劣化", "res. disen.") },
149     { SmithEssenceType::RES_WATER, _("耐水", "res. water") },
150     { SmithEssenceType::RES_TIME, _("耐時間逆転", "res. time") },
151     { SmithEssenceType::RES_CURSE, _("耐呪力", "res. curse") },
152
153     { SmithEssenceType::HOLD_EXP, _("経験値維持", "hold exp") },
154     { SmithEssenceType::FREE_ACT, _("麻痺知らず", "free action") },
155     { SmithEssenceType::WARNING, _("警告", "warning") },
156     { SmithEssenceType::LEVITATION, _("浮遊", "levitation") },
157     { SmithEssenceType::SEE_INVIS, _("可視透明", "see invis.") },
158     { SmithEssenceType::TELEPATHY, _("テレパシー", "telepathy") },
159     { SmithEssenceType::SLOW_DIGEST, _("遅消化", "slow dige.") },
160     { SmithEssenceType::REGEN, _("急速回復", "regen.") },
161     { SmithEssenceType::TELEPORT, _("テレポート", "teleport") },
162     { SmithEssenceType::NO_MAGIC, _("反魔法", "anti magic") },
163     { SmithEssenceType::LITE, _("永久光源", "perm. light") },
164     { SmithEssenceType::NO_TELE, _("反テレポ", "no teleport") },
165
166     { SmithEssenceType::SLAY_EVIL, _("邪悪倍打", "slay evil") },
167     { SmithEssenceType::SLAY_ANIMAL, _("動物倍打", "slay animal") },
168     { SmithEssenceType::SLAY_UNDEAD, _("不死倍打", "slay undead") },
169     { SmithEssenceType::SLAY_DEMON, _("悪魔倍打", "slay demon") },
170     { SmithEssenceType::SLAY_ORC, _("オーク倍打", "slay orc") },
171     { SmithEssenceType::SLAY_TROLL, _("トロル倍打", "slay troll") },
172     { SmithEssenceType::SLAY_GIANT, _("巨人倍打", "slay giant") },
173     { SmithEssenceType::SLAY_DRAGON, _("竜倍打", "slay dragon") },
174     { SmithEssenceType::SLAY_HUMAN, _("人間倍打", "slay human") },
175     { SmithEssenceType::SLAY_GOOD, _("善良倍打", "slay good") },
176
177     { SmithEssenceType::EASY2_WEAPON, _("二刀流", "two weapons") },
178     { SmithEssenceType::STRENGTHEN_BOW, _("射撃強化", "enc. ranged") },
179     { SmithEssenceType::UNIQUE, _("ユニーク", "unique") },
180
181     { SmithEssenceType::ATTACK, _("攻撃", "weapon enc.") },
182     { SmithEssenceType::AC, _("防御", "armor enc.") },
183 };
184
185 /*!
186  * @brief エッセンス抽出情報テーブル
187  */
188 const std::vector<essence_drain_type> Smith::essence_drain_info_table = {
189     { TR_STR, { SmithEssenceType::STR }, 10 },
190     { TR_INT, { SmithEssenceType::INT }, 10 },
191     { TR_WIS, { SmithEssenceType::WIS }, 10 },
192     { TR_DEX, { SmithEssenceType::DEX }, 10 },
193     { TR_CON, { SmithEssenceType::CON }, 10 },
194     { TR_CHR, { SmithEssenceType::CHR }, 10 },
195     { TR_MAGIC_MASTERY, { SmithEssenceType::MAGIC_MASTERY }, 10 },
196     { TR_FORCE_WEAPON, { SmithEssenceType::INT, SmithEssenceType::WIS }, 5 },
197     { TR_STEALTH, { SmithEssenceType::STEALTH }, 10 },
198     { TR_SEARCH, { SmithEssenceType::SEARCH }, 10 },
199     { TR_INFRA, { SmithEssenceType::INFRA }, 10 },
200     { TR_TUNNEL, { SmithEssenceType::TUNNEL }, 10 },
201     { TR_SPEED, { SmithEssenceType::SPEED }, 10 },
202     { TR_BLOWS, { SmithEssenceType::BLOWS }, 10 },
203     { TR_CHAOTIC, { SmithEssenceType::CHAOTIC }, 10 },
204     { TR_VAMPIRIC, { SmithEssenceType::VAMPIRIC }, 10 },
205     { TR_SLAY_ANIMAL, { SmithEssenceType::SLAY_ANIMAL }, 10 },
206     { TR_SLAY_EVIL, { SmithEssenceType::SLAY_EVIL }, 10 },
207     { TR_SLAY_UNDEAD, { SmithEssenceType::SLAY_UNDEAD }, 10 },
208     { TR_SLAY_DEMON, { SmithEssenceType::SLAY_DEMON }, 10 },
209     { TR_SLAY_ORC, { SmithEssenceType::SLAY_ORC }, 10 },
210     { TR_SLAY_TROLL, { SmithEssenceType::SLAY_TROLL }, 10 },
211     { TR_SLAY_GIANT, { SmithEssenceType::SLAY_GIANT }, 10 },
212     { TR_SLAY_DRAGON, { SmithEssenceType::SLAY_DRAGON }, 10 },
213     { TR_KILL_DRAGON, { SmithEssenceType::SLAY_DRAGON }, 10 },
214     { TR_VORPAL, { SmithEssenceType::BRAND_POIS, SmithEssenceType::BRAND_ACID, SmithEssenceType::BRAND_ELEC, SmithEssenceType::BRAND_FIRE, SmithEssenceType::BRAND_COLD }, 5 },
215     { TR_EARTHQUAKE, { SmithEssenceType::EATHQUAKE }, 10 },
216     { TR_BRAND_POIS, { SmithEssenceType::BRAND_POIS }, 10 },
217     { TR_BRAND_ACID, { SmithEssenceType::BRAND_ACID }, 10 },
218     { TR_BRAND_ELEC, { SmithEssenceType::BRAND_ELEC }, 10 },
219     { TR_BRAND_FIRE, { SmithEssenceType::BRAND_FIRE }, 10 },
220     { TR_BRAND_COLD, { SmithEssenceType::BRAND_COLD }, 10 },
221
222     { TR_SUST_STR, { SmithEssenceType::SUST_STATUS }, 10 },
223     { TR_SUST_INT, { SmithEssenceType::SUST_STATUS }, 10 },
224     { TR_SUST_WIS, { SmithEssenceType::SUST_STATUS }, 10 },
225     { TR_SUST_DEX, { SmithEssenceType::SUST_STATUS }, 10 },
226     { TR_SUST_CON, { SmithEssenceType::SUST_STATUS }, 10 },
227     { TR_SUST_CHR, { SmithEssenceType::SUST_STATUS }, 10 },
228     { TR_RIDING, {}, 0 },
229     { TR_EASY_SPELL, { SmithEssenceType::BRAND_MAGIC }, 10 },
230     { TR_IM_ACID, { SmithEssenceType::IMMUNITY }, 100 },
231     { TR_IM_ELEC, { SmithEssenceType::IMMUNITY }, 100 },
232     { TR_IM_FIRE, { SmithEssenceType::IMMUNITY }, 100 },
233     { TR_IM_COLD, { SmithEssenceType::IMMUNITY }, 100 },
234     { TR_THROW, {}, 0 },
235     { TR_REFLECT, { SmithEssenceType::REFLECT }, 10 },
236     { TR_FREE_ACT, { SmithEssenceType::FREE_ACT }, 10 },
237     { TR_HOLD_EXP, { SmithEssenceType::HOLD_EXP }, 10 },
238     { TR_RES_ACID, { SmithEssenceType::RES_ACID }, 10 },
239     { TR_RES_ELEC, { SmithEssenceType::RES_ELEC }, 10 },
240     { TR_RES_FIRE, { SmithEssenceType::RES_FIRE }, 10 },
241     { TR_RES_COLD, { SmithEssenceType::RES_COLD }, 10 },
242     { TR_RES_POIS, { SmithEssenceType::RES_POIS }, 10 },
243     { TR_RES_FEAR, { SmithEssenceType::RES_FEAR }, 10 },
244     { TR_RES_LITE, { SmithEssenceType::RES_LITE }, 10 },
245     { TR_RES_DARK, { SmithEssenceType::RES_DARK }, 10 },
246     { TR_RES_BLIND, { SmithEssenceType::RES_BLIND }, 10 },
247     { TR_RES_CONF, { SmithEssenceType::RES_CONF }, 10 },
248     { TR_RES_SOUND, { SmithEssenceType::RES_SOUND }, 10 },
249     { TR_RES_SHARDS, { SmithEssenceType::RES_SHARDS }, 10 },
250     { TR_RES_NETHER, { SmithEssenceType::RES_NETHER }, 10 },
251     { TR_RES_NEXUS, { SmithEssenceType::RES_NEXUS }, 10 },
252     { TR_RES_CHAOS, { SmithEssenceType::RES_CHAOS }, 10 },
253     { TR_RES_DISEN, { SmithEssenceType::RES_DISEN }, 10 },
254
255     { TR_SH_FIRE, { SmithEssenceType::BRAND_FIRE, SmithEssenceType::RES_FIRE }, 10 },
256     { TR_SH_ELEC, { SmithEssenceType::BRAND_ELEC, SmithEssenceType::RES_ELEC }, 10 },
257     { TR_SLAY_HUMAN, { SmithEssenceType::SLAY_HUMAN }, 10 },
258     { TR_SH_COLD, { SmithEssenceType::BRAND_COLD, SmithEssenceType::RES_COLD }, 10 },
259     { TR_NO_TELE, { SmithEssenceType::NO_TELE }, 10 },
260     { TR_NO_MAGIC, { SmithEssenceType::NO_MAGIC }, 10 },
261     { TR_DEC_MANA, { SmithEssenceType::INT }, 10 },
262     { TR_TY_CURSE, {}, -1 },
263     { TR_WARNING, { SmithEssenceType::WARNING }, 10 },
264     { TR_HIDE_TYPE, {}, 0 },
265     { TR_SHOW_MODS, {}, 0 },
266     { TR_SLAY_GOOD, { SmithEssenceType::SLAY_GOOD }, 10 },
267     { TR_LEVITATION, { SmithEssenceType::LEVITATION }, 10 },
268     { TR_LITE_1, { SmithEssenceType::LITE }, 10 },
269     { TR_SEE_INVIS, { SmithEssenceType::SEE_INVIS }, 10 },
270     { TR_TELEPATHY, { SmithEssenceType::TELEPATHY }, 10 },
271     { TR_SLOW_DIGEST, { SmithEssenceType::SLOW_DIGEST }, 10 },
272     { TR_REGEN, { SmithEssenceType::REGEN }, 10 },
273     { TR_XTRA_MIGHT, { SmithEssenceType::STRENGTHEN_BOW }, 10 },
274     { TR_XTRA_SHOTS, { SmithEssenceType::STRENGTHEN_BOW }, 10 },
275     { TR_IGNORE_ACID, {}, 0 },
276     { TR_IGNORE_ELEC, {}, 0 },
277     { TR_IGNORE_FIRE, {}, 0 },
278     { TR_IGNORE_COLD, {}, 0 },
279     { TR_ACTIVATE, {}, 0 },
280     { TR_DRAIN_EXP, {}, -1 },
281     { TR_TELEPORT, { SmithEssenceType::TELEPORT }, 10 },
282     { TR_AGGRAVATE, {}, -1 },
283     { TR_BLESSED, {}, 0 },
284     { TR_XXX_93, {}, 0 },
285     { TR_XXX_94, {}, 0 },
286     { TR_KILL_GOOD, { SmithEssenceType::SLAY_GOOD }, 10 },
287
288     { TR_KILL_ANIMAL, { SmithEssenceType::SLAY_ANIMAL }, 10 },
289     { TR_KILL_EVIL, { SmithEssenceType::SLAY_EVIL }, 10 },
290     { TR_KILL_UNDEAD, { SmithEssenceType::SLAY_UNDEAD }, 10 },
291     { TR_KILL_DEMON, { SmithEssenceType::SLAY_DEMON }, 10 },
292     { TR_KILL_ORC, { SmithEssenceType::SLAY_ORC }, 10 },
293     { TR_KILL_TROLL, { SmithEssenceType::SLAY_TROLL }, 10 },
294     { TR_KILL_GIANT, { SmithEssenceType::SLAY_GIANT }, 10 },
295     { TR_KILL_HUMAN, { SmithEssenceType::SLAY_HUMAN }, 10 },
296     { TR_ESP_ANIMAL, { SmithEssenceType::SLAY_ANIMAL }, 10 },
297     { TR_ESP_UNDEAD, { SmithEssenceType::SLAY_UNDEAD }, 10 },
298     { TR_ESP_DEMON, { SmithEssenceType::SLAY_DEMON }, 10 },
299     { TR_ESP_ORC, { SmithEssenceType::SLAY_ORC }, 10 },
300     { TR_ESP_TROLL, { SmithEssenceType::SLAY_TROLL }, 10 },
301     { TR_ESP_GIANT, { SmithEssenceType::SLAY_GIANT }, 10 },
302     { TR_ESP_DRAGON, { SmithEssenceType::SLAY_DRAGON }, 10 },
303     { TR_ESP_HUMAN, { SmithEssenceType::SLAY_HUMAN }, 10 },
304     { TR_ESP_EVIL, { SmithEssenceType::SLAY_EVIL }, 10 },
305     { TR_ESP_GOOD, { SmithEssenceType::SLAY_GOOD }, 10 },
306     { TR_ESP_NONLIVING, {}, 0 }, // TODO
307     { TR_ESP_UNIQUE, { SmithEssenceType::UNIQUE }, 20 },
308     { TR_FULL_NAME, {}, 0 },
309     { TR_FIXED_FLAVOR, {}, 0 },
310     { TR_ADD_L_CURSE, {}, -1 },
311     { TR_ADD_H_CURSE, {}, -1 },
312     { TR_DRAIN_HP, {}, -1 },
313     { TR_DRAIN_MANA, {}, -1 },
314     { TR_LITE_2, { SmithEssenceType::LITE }, 20 },
315     { TR_LITE_3, { SmithEssenceType::LITE }, 30 },
316     { TR_LITE_M1, {}, 0 },
317     { TR_LITE_M2, {}, 0 },
318     { TR_LITE_M3, {}, 0 },
319     { TR_LITE_FUEL, {}, 0 },
320
321     { TR_CALL_ANIMAL, {}, -1 },
322     { TR_CALL_DEMON, {}, -1 },
323     { TR_CALL_DRAGON, {}, -1 },
324     { TR_CALL_UNDEAD, {}, -1 },
325     { TR_COWARDICE, {}, -1 },
326     { TR_LOW_MELEE, {}, -1 },
327     { TR_LOW_AC, {}, -1 },
328     { TR_HARD_SPELL, {}, -1 },
329     { TR_FAST_DIGEST, {}, -1 },
330     { TR_SLOW_REGEN, {}, -1 },
331     { TR_MIGHTY_THROW, {}, 0 },
332     { TR_EASY2_WEAPON, { SmithEssenceType::EASY2_WEAPON }, 10 },
333     { TR_DOWN_SAVING, {}, -1 },
334     { TR_NO_AC, {}, -1 },
335     { TR_HEAVY_SPELL, {}, -1 },
336     { TR_RES_TIME, { SmithEssenceType::RES_TIME }, 10 },
337     { TR_RES_WATER, { SmithEssenceType::RES_WATER }, 10 },
338     { TR_INVULN_ARROW, {}, 0 },
339     { TR_DARK_SOURCE, {}, 0 },
340     { TR_SUPPORTIVE, { SmithEssenceType::EASY2_WEAPON }, 5 },
341     { TR_RES_CURSE, { SmithEssenceType::RES_CURSE }, 10 },
342     { TR_BERS_RAGE, {}, -1 },
343     { TR_BRAND_MAGIC, { SmithEssenceType::BRAND_MAGIC }, 10 },
344     { TR_IMPACT, {}, 0 },
345     { TR_VUL_ACID, {}, -1 },
346     { TR_VUL_COLD, {}, -1 },
347     { TR_VUL_ELEC, {}, -1 },
348     { TR_VUL_FIRE, {}, -1 },
349     { TR_VUL_LITE, {}, -1 },
350     { TR_IM_DARK, {}, 0 },
351
352     { TR_SELF_FIRE, { SmithEssenceType::BRAND_FIRE, SmithEssenceType::RES_FIRE }, 10 },
353     { TR_SELF_ELEC, { SmithEssenceType::BRAND_ELEC, SmithEssenceType::RES_ELEC }, 10 },
354     { TR_SELF_COLD, { SmithEssenceType::BRAND_COLD, SmithEssenceType::RES_COLD }, 10 },
355     { TR_PERSISTENT_CURSE, {}, -1 },
356     { TR_VUL_CURSE, {}, -1 },
357 };
358
359 namespace {
360
361 template <typename T, typename... Args>
362 std::shared_ptr<ISmithInfo> make_info(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssenceType> need_essences, int consumption, Args &&...args)
363 {
364     return std::make_shared<T>(effect, name, category, std::move(need_essences), consumption, std::forward<Args>(args)...);
365 }
366
367 std::shared_ptr<ISmithInfo> make_basic_smith_info(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssenceType> need_essences, int consumption, TrFlags add_flags)
368 {
369     return make_info<BasicSmithInfo>(effect, name, category, std::move(need_essences), consumption, std::move(add_flags));
370 }
371
372 }
373
374 /*!
375  * @brief 鍛冶情報テーブル
376  */
377 const std::vector<std::shared_ptr<ISmithInfo>> Smith::smith_info_table = {
378     make_basic_smith_info(SmithEffectType::NONE, _("なし", "None"), SmithCategoryType::NONE, std::vector<SmithEssenceType>{ SmithEssenceType::NONE }, 0, {}),
379
380     make_basic_smith_info(SmithEffectType::STR, _("腕力", "strength"), SmithCategoryType::PVAL, { SmithEssenceType::STR }, 20, { TR_STR }),
381     make_basic_smith_info(SmithEffectType::INT, _("知能", "intelligence"), SmithCategoryType::PVAL, { SmithEssenceType::INT }, 20, { TR_INT }),
382     make_basic_smith_info(SmithEffectType::WIS, _("賢さ", "wisdom"), SmithCategoryType::PVAL, { SmithEssenceType::WIS }, 20, { TR_WIS }),
383     make_basic_smith_info(SmithEffectType::DEX, _("器用さ", "dexterity"), SmithCategoryType::PVAL, { SmithEssenceType::DEX }, 20, { TR_DEX }),
384     make_basic_smith_info(SmithEffectType::CON, _("耐久力", "constitution"), SmithCategoryType::PVAL, { SmithEssenceType::CON }, 20, { TR_CON }),
385     make_basic_smith_info(SmithEffectType::CHR, _("魅力", "charisma"), SmithCategoryType::PVAL, { SmithEssenceType::CHR }, 20, { TR_CHR }),
386
387     make_basic_smith_info(SmithEffectType::SUST_STR, _("腕力維持", "sustain strength"), SmithCategoryType::ABILITY, { SmithEssenceType::SUST_STATUS }, 15, { TR_SUST_STR }),
388     make_basic_smith_info(SmithEffectType::SUST_INT, _("知能維持", "sustain intelligence"), SmithCategoryType::ABILITY, { SmithEssenceType::SUST_STATUS }, 15, { TR_SUST_INT }),
389     make_basic_smith_info(SmithEffectType::SUST_WIS, _("賢さ維持", "sustain wisdom"), SmithCategoryType::ABILITY, { SmithEssenceType::SUST_STATUS }, 15, { TR_SUST_WIS }),
390     make_basic_smith_info(SmithEffectType::SUST_DEX, _("器用さ維持", "sustain dexterity"), SmithCategoryType::ABILITY, { SmithEssenceType::SUST_STATUS }, 15, { TR_SUST_DEX }),
391     make_basic_smith_info(SmithEffectType::SUST_CON, _("耐久力維持", "sustain constitution"), SmithCategoryType::ABILITY, { SmithEssenceType::SUST_STATUS }, 15, { TR_SUST_CON }),
392     make_basic_smith_info(SmithEffectType::SUST_CHR, _("魅力維持", "sustain charisma"), SmithCategoryType::ABILITY, { SmithEssenceType::SUST_STATUS }, 15, { TR_SUST_CHR }),
393
394     make_basic_smith_info(SmithEffectType::MAGIC_MASTERY, _("魔力支配", "magic mastery"), SmithCategoryType::PVAL, { SmithEssenceType::MAGIC_MASTERY }, 20, { TR_MAGIC_MASTERY }),
395     make_basic_smith_info(SmithEffectType::STEALTH, _("隠密", "stealth"), SmithCategoryType::PVAL, { SmithEssenceType::STEALTH }, 40, { TR_STEALTH }),
396     make_basic_smith_info(SmithEffectType::SEARCH, _("探索", "searching"), SmithCategoryType::PVAL, { SmithEssenceType::SEARCH }, 15, { TR_SEARCH }),
397     make_basic_smith_info(SmithEffectType::INFRA, _("赤外線視力", "infravision"), SmithCategoryType::PVAL, { SmithEssenceType::INFRA }, 15, { TR_INFRA }),
398     make_basic_smith_info(SmithEffectType::TUNNEL, _("採掘", "digging"), SmithCategoryType::PVAL, { SmithEssenceType::TUNNEL }, 15, { TR_TUNNEL }),
399     make_basic_smith_info(SmithEffectType::SPEED, _("スピード", "speed"), SmithCategoryType::PVAL, { SmithEssenceType::SPEED }, 12, { TR_SPEED }),
400     make_basic_smith_info(SmithEffectType::BLOWS, _("追加攻撃", "extra attack"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BLOWS }, 20, { TR_BLOWS }),
401
402     make_basic_smith_info(SmithEffectType::CHAOTIC, _("カオス攻撃", "chaos brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::CHAOTIC }, 15, { TR_CHAOTIC }),
403     make_basic_smith_info(SmithEffectType::VAMPIRIC, _("吸血攻撃", "vampiric brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::VAMPIRIC }, 60, { TR_VAMPIRIC }),
404     make_basic_smith_info(SmithEffectType::EARTHQUAKE, _("地震攻撃", "quake brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::EATHQUAKE }, 15, { TR_EARTHQUAKE }),
405     make_basic_smith_info(SmithEffectType::BRAND_POIS, _("毒殺", "poison brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_POIS }, 20, { TR_BRAND_POIS }),
406     make_basic_smith_info(SmithEffectType::BRAND_ACID, _("溶解", "acid brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_ACID }, 20, { TR_BRAND_ACID }),
407     make_basic_smith_info(SmithEffectType::BRAND_ELEC, _("電撃", "electric brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_ELEC }, 20, { TR_BRAND_ELEC }),
408     make_basic_smith_info(SmithEffectType::BRAND_FIRE, _("焼棄", "fire brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_FIRE }, 20, { TR_BRAND_FIRE }),
409     make_basic_smith_info(SmithEffectType::BRAND_COLD, _("凍結", "cold brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_COLD }, 20, { TR_BRAND_COLD }),
410     make_basic_smith_info(SmithEffectType::VORPAL, _("切れ味", "sharpness"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_ACID, SmithEssenceType::BRAND_ELEC, SmithEssenceType::BRAND_FIRE, SmithEssenceType::BRAND_COLD }, 10, { TR_VORPAL }),
411     make_basic_smith_info(SmithEffectType::BRAND_MAGIC, _("魔術属性攻撃", "magic brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::BRAND_MAGIC }, 20, { TR_BRAND_MAGIC }),
412     make_basic_smith_info(SmithEffectType::XTRA_MIGHT, _("射撃倍率強化", "enhance firing power"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::STRENGTHEN_BOW }, 50, { TR_XTRA_MIGHT }),
413     make_basic_smith_info(SmithEffectType::XTRA_SHOTS, _("射撃速度強化", "enhance firing rate"), SmithCategoryType::WEAPON_ATTR, { SmithEssenceType::STRENGTHEN_BOW }, 50, { TR_XTRA_SHOTS }),
414
415     make_basic_smith_info(SmithEffectType::IM_ACID, _("酸免疫", "acid immunity"), SmithCategoryType::RESISTANCE, { SmithEssenceType::IMMUNITY, SmithEssenceType::RES_ACID }, 200, { TR_IM_ACID }),
416     make_basic_smith_info(SmithEffectType::IM_ELEC, _("電撃免疫", "electric immunity"), SmithCategoryType::RESISTANCE, { SmithEssenceType::IMMUNITY, SmithEssenceType::RES_ELEC }, 200, { TR_IM_ELEC }),
417     make_basic_smith_info(SmithEffectType::IM_FIRE, _("火炎免疫", "fire immunity"), SmithCategoryType::RESISTANCE, { SmithEssenceType::IMMUNITY, SmithEssenceType::RES_FIRE }, 200, { TR_IM_FIRE }),
418     make_basic_smith_info(SmithEffectType::IM_COLD, _("冷気免疫", "cold immunity"), SmithCategoryType::RESISTANCE, { SmithEssenceType::IMMUNITY, SmithEssenceType::RES_COLD }, 200, { TR_IM_COLD }),
419     make_basic_smith_info(SmithEffectType::REFLECT, _("反射", "reflection"), SmithCategoryType::RESISTANCE, { SmithEssenceType::REFLECT }, 20, { TR_REFLECT }),
420
421     make_basic_smith_info(SmithEffectType::RES_ACID, _("耐酸", "resistance to acid"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_ACID }, 15, { TR_RES_ACID }),
422     make_basic_smith_info(SmithEffectType::RES_ELEC, _("耐電撃", "resistance to electric"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_ELEC }, 15, { TR_RES_ELEC }),
423     make_basic_smith_info(SmithEffectType::RES_FIRE, _("耐火炎", "resistance to fire"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_FIRE }, 15, { TR_RES_FIRE }),
424     make_basic_smith_info(SmithEffectType::RES_COLD, _("耐冷気", "resistance to cold"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_COLD }, 15, { TR_RES_COLD }),
425     make_basic_smith_info(SmithEffectType::RES_POIS, _("耐毒", "resistance to poison"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_POIS }, 25, { TR_RES_POIS }),
426     make_basic_smith_info(SmithEffectType::RES_FEAR, _("耐恐怖", "resistance to fear"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_FEAR }, 20, { TR_RES_FEAR }),
427     make_basic_smith_info(SmithEffectType::RES_LITE, _("耐閃光", "resistance to light"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_LITE }, 20, { TR_RES_LITE }),
428     make_basic_smith_info(SmithEffectType::RES_DARK, _("耐暗黒", "resistance to dark"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_DARK }, 20, { TR_RES_DARK }),
429     make_basic_smith_info(SmithEffectType::RES_BLIND, _("耐盲目", "resistance to blind"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_BLIND }, 20, { TR_RES_BLIND }),
430     make_basic_smith_info(SmithEffectType::RES_CONF, _("耐混乱", "resistance to confusion"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_CONF }, 20, { TR_RES_CONF }),
431     make_basic_smith_info(SmithEffectType::RES_SOUND, _("耐轟音", "resistance to sound"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_SOUND }, 20, { TR_RES_SOUND }),
432     make_basic_smith_info(SmithEffectType::RES_SHARDS, _("耐破片", "resistance to shard"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_SHARDS }, 20, { TR_RES_SHARDS }),
433     make_basic_smith_info(SmithEffectType::RES_NETHER, _("耐地獄", "resistance to nether"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_NETHER }, 20, { TR_RES_NETHER }),
434     make_basic_smith_info(SmithEffectType::RES_NEXUS, _("耐因果混乱", "resistance to nexus"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_NEXUS }, 20, { TR_RES_NEXUS }),
435     make_basic_smith_info(SmithEffectType::RES_CHAOS, _("耐カオス", "resistance to chaos"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_CHAOS }, 20, { TR_RES_CHAOS }),
436     make_basic_smith_info(SmithEffectType::RES_DISEN, _("耐劣化", "resistance to disenchantment"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_DISEN }, 20, { TR_RES_DISEN }),
437     make_basic_smith_info(SmithEffectType::RES_WATER, _("耐水", "resistance to water"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_WATER }, 20, { TR_RES_WATER }),
438     make_basic_smith_info(SmithEffectType::RES_TIME, _("耐時間逆転", "resistance to time"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_TIME }, 20, { TR_RES_TIME }),
439     make_basic_smith_info(SmithEffectType::RES_CURSE, _("耐呪力", "resistance to curse"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_CURSE }, 20, { TR_RES_CURSE }),
440
441     make_basic_smith_info(SmithEffectType::HOLD_EXP, _("経験値維持", "hold experience"), SmithCategoryType::ABILITY, { SmithEssenceType::HOLD_EXP }, 20, { TR_HOLD_EXP }),
442     make_basic_smith_info(SmithEffectType::FREE_ACT, _("麻痺知らず", "free action"), SmithCategoryType::ABILITY, { SmithEssenceType::FREE_ACT }, 20, { TR_FREE_ACT }),
443     make_basic_smith_info(SmithEffectType::WARNING, _("警告", "warning"), SmithCategoryType::ABILITY, { SmithEssenceType::WARNING }, 20, { TR_WARNING }),
444     make_basic_smith_info(SmithEffectType::LEVITATION, _("浮遊", "levitation"), SmithCategoryType::ABILITY, { SmithEssenceType::LEVITATION }, 20, { TR_LEVITATION }),
445     make_basic_smith_info(SmithEffectType::SEE_INVIS, _("可視透明", "see invisible"), SmithCategoryType::ABILITY, { SmithEssenceType::SEE_INVIS }, 20, { TR_SEE_INVIS }),
446     make_basic_smith_info(SmithEffectType::SLOW_DIGEST, _("遅消化", "slow digestion"), SmithCategoryType::ABILITY, { SmithEssenceType::SLOW_DIGEST }, 15, { TR_SLOW_DIGEST }),
447     make_basic_smith_info(SmithEffectType::REGEN, _("急速回復", "regeneration"), SmithCategoryType::ABILITY, { SmithEssenceType::REGEN }, 20, { TR_REGEN }),
448     make_basic_smith_info(SmithEffectType::TELEPORT, _("テレポート", "teleport"), SmithCategoryType::ABILITY, { SmithEssenceType::TELEPORT }, 25, { TR_TELEPORT }),
449     make_basic_smith_info(SmithEffectType::NO_MAGIC, _("反魔法", "anti magic"), SmithCategoryType::ABILITY, { SmithEssenceType::NO_MAGIC }, 15, { TR_NO_MAGIC }),
450     make_basic_smith_info(SmithEffectType::LITE, _("永久光源", "permanent light"), SmithCategoryType::ABILITY, { SmithEssenceType::LITE }, 15, { TR_LITE_1 }),
451     make_basic_smith_info(SmithEffectType::NO_TELE, _("反テレポート", "prevent teleportation"), SmithCategoryType::ABILITY, { SmithEssenceType::NO_TELE }, 15, { TR_NO_TELE }),
452
453     make_basic_smith_info(SmithEffectType::SLAY_EVIL, _("邪悪倍打", "slay evil"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_EVIL }, 100, { TR_SLAY_EVIL }),
454     make_basic_smith_info(SmithEffectType::SLAY_ANIMAL, _("動物倍打", "slay animal"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_ANIMAL }, 20, { TR_SLAY_ANIMAL }),
455     make_basic_smith_info(SmithEffectType::SLAY_UNDEAD, _("不死倍打", "slay undead"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_UNDEAD }, 20, { TR_SLAY_UNDEAD }),
456     make_basic_smith_info(SmithEffectType::SLAY_DEMON, _("悪魔倍打", "slay demon"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_DEMON }, 20, { TR_SLAY_DEMON }),
457     make_basic_smith_info(SmithEffectType::SLAY_ORC, _("オーク倍打", "slay orc"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_ORC }, 20, { TR_SLAY_ORC }),
458     make_basic_smith_info(SmithEffectType::SLAY_TROLL, _("トロル倍打", "slay troll"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_TROLL }, 20, { TR_SLAY_TROLL }),
459     make_basic_smith_info(SmithEffectType::SLAY_GIANT, _("巨人倍打", "slay giant"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_GIANT }, 20, { TR_SLAY_GIANT }),
460     make_basic_smith_info(SmithEffectType::SLAY_DRAGON, _("竜倍打", "slay dragon"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_DRAGON }, 20, { TR_SLAY_DRAGON }),
461     make_basic_smith_info(SmithEffectType::SLAY_HUMAN, _("人間倍打", "slay human"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_HUMAN }, 20, { TR_SLAY_HUMAN }),
462     make_basic_smith_info(SmithEffectType::SLAY_GOOD, _("善良倍打", "slay good"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_GOOD }, 20, { TR_SLAY_GOOD }),
463
464     make_basic_smith_info(SmithEffectType::KILL_EVIL, _("邪悪倍倍打", "kill evil"), SmithCategoryType::NONE, { SmithEssenceType::SLAY_EVIL }, 0, { TR_KILL_EVIL }), // 強力すぎるため無効(SmithCategory:NONE)
465     make_basic_smith_info(SmithEffectType::KILL_ANIMAL, _("動物倍倍打", "kill animal"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_ANIMAL }, 60, { TR_KILL_ANIMAL }),
466     make_basic_smith_info(SmithEffectType::KILL_UNDEAD, _("不死倍倍打", "kill undead"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_UNDEAD }, 60, { TR_KILL_UNDEAD }),
467     make_basic_smith_info(SmithEffectType::KILL_DEMON, _("悪魔倍倍打", "kill demon"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_DEMON }, 60, { TR_KILL_DEMON }),
468     make_basic_smith_info(SmithEffectType::KILL_ORC, _("オーク倍倍打", "kill orc"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_ORC }, 60, { TR_KILL_ORC }),
469     make_basic_smith_info(SmithEffectType::KILL_TROLL, _("トロル倍倍打", "kill troll"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_TROLL }, 60, { TR_KILL_TROLL }),
470     make_basic_smith_info(SmithEffectType::KILL_GIANT, _("巨人倍倍打", "kill giant"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_GIANT }, 60, { TR_KILL_GIANT }),
471     make_basic_smith_info(SmithEffectType::KILL_DRAGON, _("竜倍倍打", "kill dragon"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_DRAGON }, 60, { TR_KILL_DRAGON }),
472     make_basic_smith_info(SmithEffectType::KILL_HUMAN, _("人間倍倍打", "kill human"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_HUMAN }, 60, { TR_KILL_HUMAN }),
473     make_basic_smith_info(SmithEffectType::KILL_GOOD, _("善良倍倍打", "kill good"), SmithCategoryType::SLAYING, { SmithEssenceType::SLAY_GOOD }, 60, { TR_KILL_GOOD }),
474
475     make_basic_smith_info(SmithEffectType::TELEPATHY, _("テレパシー", "telepathy"), SmithCategoryType::ESP, { SmithEssenceType::TELEPATHY }, 15, { TR_TELEPATHY }),
476     make_basic_smith_info(SmithEffectType::ESP_ANIMAL, _("動物ESP", "sense animal"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_ANIMAL }, 40, { TR_ESP_ANIMAL }),
477     make_basic_smith_info(SmithEffectType::ESP_UNDEAD, _("不死ESP", "sense undead"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_UNDEAD }, 40, { TR_ESP_UNDEAD }),
478     make_basic_smith_info(SmithEffectType::ESP_DEMON, _("悪魔ESP", "sense demon"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_DEMON }, 40, { TR_ESP_DEMON }),
479     make_basic_smith_info(SmithEffectType::ESP_ORC, _("オークESP", "sense orc"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_ORC }, 40, { TR_ESP_ORC }),
480     make_basic_smith_info(SmithEffectType::ESP_TROLL, _("トロルESP", "sense troll"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_TROLL }, 40, { TR_ESP_TROLL }),
481     make_basic_smith_info(SmithEffectType::ESP_GIANT, _("巨人ESP", "sense giant"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_GIANT }, 40, { TR_ESP_GIANT }),
482     make_basic_smith_info(SmithEffectType::ESP_DRAGON, _("竜ESP", "sense dragon"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_DRAGON }, 40, { TR_ESP_DRAGON }),
483     make_basic_smith_info(SmithEffectType::ESP_HUMAN, _("人間ESP", "sense human"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_HUMAN }, 40, { TR_ESP_HUMAN }),
484     make_basic_smith_info(SmithEffectType::ESP_GOOD, _("善良ESP", "sense good"), SmithCategoryType::ESP, { SmithEssenceType::SLAY_GOOD }, 40, { TR_ESP_GOOD }),
485     make_basic_smith_info(SmithEffectType::ESP_UNIQUE, _("ユニークESP", "sense unique"), SmithCategoryType::ESP, { SmithEssenceType::UNIQUE }, 100, { TR_ESP_UNIQUE }),
486
487     make_basic_smith_info(SmithEffectType::SH_FIRE, _("火炎オーラ", "fiery sheath"), SmithCategoryType::ETC, { SmithEssenceType::RES_FIRE, SmithEssenceType::BRAND_FIRE }, 50, { TR_RES_FIRE, TR_SH_FIRE }),
488     make_basic_smith_info(SmithEffectType::SH_ELEC, _("電撃オーラ", "electric sheath"), SmithCategoryType::ETC, { SmithEssenceType::RES_ELEC, SmithEssenceType::BRAND_ELEC }, 50, { TR_RES_ELEC, TR_SH_ELEC }),
489     make_basic_smith_info(SmithEffectType::SH_COLD, _("冷気オーラ", "sheath of coldness"), SmithCategoryType::ETC, { SmithEssenceType::RES_COLD, SmithEssenceType::BRAND_COLD }, 50, { TR_RES_COLD, TR_SH_COLD }),
490
491     make_basic_smith_info(SmithEffectType::RESISTANCE, _("全耐性", "resistance"), SmithCategoryType::RESISTANCE, { SmithEssenceType::RES_ACID, SmithEssenceType::RES_ELEC, SmithEssenceType::RES_FIRE, SmithEssenceType::RES_COLD }, 150, { TR_RES_ACID, TR_RES_ELEC, TR_RES_FIRE, TR_RES_COLD }),
492     make_info<SlayingGlovesSmithInfo>(SmithEffectType::SLAY_GLOVE, _("殺戮の小手", "gauntlets of slaying"), SmithCategoryType::ETC, { SmithEssenceType::ATTACK }, 200),
493     make_basic_smith_info(SmithEffectType::EASY_2WEAPON, _("源氏の小手", "gauntlets of Genji"), SmithCategoryType::ETC, { SmithEssenceType::EASY2_WEAPON }, 20, { TR_EASY2_WEAPON }),
494
495     make_info<ActivationSmithInfo>(SmithEffectType::ACT_QUAKE, _("地震", "quake"), SmithCategoryType::ACTIVATION, { SmithEssenceType::EATHQUAKE }, 15, RandomArtActType::QUAKE),
496     make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_ACID, _("酸耐性", "resist acid"), SmithCategoryType::ACTIVATION, { SmithEssenceType::RES_ACID }, 30, RandomArtActType::RESIST_ACID),
497     make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_ELEC, _("電撃耐性", "resist electricity"), SmithCategoryType::ACTIVATION, { SmithEssenceType::RES_ELEC }, 30, RandomArtActType::RESIST_ELEC),
498     make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_FIRE, _("火炎耐性", "resist fire"), SmithCategoryType::ACTIVATION, { SmithEssenceType::RES_FIRE }, 30, RandomArtActType::RESIST_FIRE),
499     make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_COLD, _("冷気耐性", "resist cold"), SmithCategoryType::ACTIVATION, { SmithEssenceType::RES_COLD }, 30, RandomArtActType::RESIST_COLD),
500     make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_POIS, _("毒耐性", "resist poison"), SmithCategoryType::ACTIVATION, { SmithEssenceType::RES_POIS }, 40, RandomArtActType::RESIST_POIS),
501     make_info<ActivationSmithInfo>(SmithEffectType::ACT_PHASE_DOOR, _("ショート・テレポート", "blink"), SmithCategoryType::ACTIVATION, { SmithEssenceType::TELEPORT }, 30, RandomArtActType::PHASE_DOOR),
502     make_info<ActivationSmithInfo>(SmithEffectType::ACT_TELEPORT, _("テレポート", "teleport"), SmithCategoryType::ACTIVATION, { SmithEssenceType::TELEPORT }, 40, RandomArtActType::TELEPORT),
503     make_info<ActivationSmithInfo>(SmithEffectType::ACT_SPEED, _("スピード", "speed"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SPEED }, 25, RandomArtActType::SPEED),
504     make_info<ActivationSmithInfo>(SmithEffectType::ACT_STONE_MUD, _("岩石溶解", "stone to mud"), SmithCategoryType::ACTIVATION, { SmithEssenceType::TUNNEL }, 100, RandomArtActType::STONE_MUD),
505     make_info<ActivationSmithInfo>(SmithEffectType::ACT_LIGHT, _("イルミネーション", "light area"), SmithCategoryType::ACTIVATION, { SmithEssenceType::LITE }, 30, RandomArtActType::LIGHT),
506     make_info<ActivationSmithInfo>(SmithEffectType::ACT_MAP_LIGHT, _("魔法の地図と光", "light & map area"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SEARCH, SmithEssenceType::LITE }, 30, RandomArtActType::MAP_LIGHT),
507     make_info<ActivationSmithInfo>(SmithEffectType::ACT_DETECT_ALL, _("全感知", "detection"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SEARCH, SmithEssenceType::TELEPATHY }, 30, RandomArtActType::DETECT_ALL),
508     make_info<ActivationSmithInfo>(SmithEffectType::ACT_DETECT_UNIQUE, _("階にいるユニークモンスターを表示", "list of the uniques on the level"), SmithCategoryType::ACTIVATION, { SmithEssenceType::UNIQUE }, 100, RandomArtActType::DETECT_UNIQUE),
509     make_info<ActivationSmithInfo>(SmithEffectType::ACT_REST_EXP, _("経験値復活", "restore experience"), SmithCategoryType::ACTIVATION, { SmithEssenceType::HOLD_EXP }, 30, RandomArtActType::REST_EXP),
510     make_info<ActivationSmithInfo>(SmithEffectType::ACT_REST_ALL, _("全ステータスと経験値復活", "restore stats and experience"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SUST_STATUS, SmithEssenceType::HOLD_EXP }, 40, RandomArtActType::REST_ALL),
511     make_info<ActivationSmithInfo>(SmithEffectType::ACT_PROT_EVIL, _("対邪悪結界", "protect evil"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SLAY_EVIL }, 100, RandomArtActType::PROT_EVIL),
512     make_info<ActivationSmithInfo>(SmithEffectType::ACT_DISP_EVIL, _("邪悪退散", "dispel evil"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SLAY_EVIL }, 100, RandomArtActType::DISP_EVIL),
513     make_info<ActivationSmithInfo>(SmithEffectType::ACT_DISP_GOOD, _("善良退散", "dispel good"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SLAY_GOOD }, 50, RandomArtActType::DISP_GOOD),
514     make_info<ActivationSmithInfo>(SmithEffectType::ACT_PESTICIDE, _("害虫駆除", "dispel pests"), SmithCategoryType::ACTIVATION, { SmithEssenceType::BRAND_POIS }, 30, RandomArtActType::PESTICIDE),
515     make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_ACID, _("アシッド・ボール", "ball of acid"), SmithCategoryType::ACTIVATION, { SmithEssenceType::BRAND_ACID }, 40, RandomArtActType::BA_ACID_1),
516     make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_ELEC, _("サンダー・ボール", "ball of lightning"), SmithCategoryType::ACTIVATION, { SmithEssenceType::BRAND_ELEC }, 40, RandomArtActType::BA_ELEC_2),
517     make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_FIRE, _("ファイア・ボール", "ball of fire"), SmithCategoryType::ACTIVATION, { SmithEssenceType::BRAND_FIRE }, 40, RandomArtActType::BA_FIRE_4),
518     make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_COLD, _("アイス・ボール", "ball of cold"), SmithCategoryType::ACTIVATION, { SmithEssenceType::BRAND_COLD }, 40, RandomArtActType::BA_COLD_2),
519     make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_NUKE, _("放射能球", "ball of nuke"), SmithCategoryType::ACTIVATION, { SmithEssenceType::BRAND_POIS, SmithEssenceType::CHAOTIC }, 30, RandomArtActType::BA_NUKE_1),
520     make_info<ActivationSmithInfo>(SmithEffectType::ACT_SUNLIGHT, _("太陽光線", "beam of sunlight"), SmithCategoryType::ACTIVATION, { SmithEssenceType::LITE }, 40, RandomArtActType::SUNLIGHT),
521     make_info<ActivationSmithInfo>(SmithEffectType::ACT_DRAIN, _("吸血の矢", "drain bolt"), SmithCategoryType::ACTIVATION, { SmithEssenceType::VAMPIRIC }, 100, RandomArtActType::DRAIN_1),
522     make_info<ActivationSmithInfo>(SmithEffectType::ACT_CONFUSE, _("パニック・モンスター", "confuse monster"), SmithCategoryType::ACTIVATION, { SmithEssenceType::CHAOTIC }, 30, RandomArtActType::CONFUSE),
523     make_info<ActivationSmithInfo>(SmithEffectType::ACT_SATIATE, _("空腹充足", "satisfy hunger"), SmithCategoryType::ACTIVATION, { SmithEssenceType::SLOW_DIGEST }, 50, RandomArtActType::SATIATE),
524     make_info<ActivationSmithInfo>(SmithEffectType::ACT_CURE_700, _("体力回復", "heal"), SmithCategoryType::ACTIVATION, { SmithEssenceType::REGEN }, 100, RandomArtActType::CURE_700),
525
526     make_info<EnchantWeaponSmithInfo>(SmithEffectType::ATTACK, _("攻撃", "weapon enchant"), SmithCategoryType::ENCHANT, { SmithEssenceType::ATTACK }, 30),
527     make_info<EnchantArmourSmithInfo>(SmithEffectType::AC, _("防御", "armor enchant"), SmithCategoryType::ENCHANT, { SmithEssenceType::AC }, 15),
528     make_info<SustainSmithInfo>(SmithEffectType::SUSTAIN, _("装備保持", "elements proof"), SmithCategoryType::ENCHANT, { SmithEssenceType::RES_ACID, SmithEssenceType::RES_ELEC, SmithEssenceType::RES_FIRE, SmithEssenceType::RES_COLD }, 10),
529 };