OSDN Git Service

[Refactor] enum classの型名変更 SmithCategory -> SmithCategoryType
authordis- <dis.rogue@gmail.com>
Fri, 12 Nov 2021 06:52:36 +0000 (15:52 +0900)
committerdis- <dis.rogue@gmail.com>
Fri, 12 Nov 2021 09:04:19 +0000 (18:04 +0900)
#1824にて議論されていたフォーマット統一処理。
SmithCategoryをSmithCategoryTypeに名称変更する。

src/mind/mind-weaponsmith.cpp
src/object-enchant/object-smith.cpp
src/object-enchant/object-smith.h
src/object-enchant/smith-info.cpp
src/object-enchant/smith-info.h
src/object-enchant/smith-tables.cpp
src/object-enchant/smith-types.h

index 4d87381..8894214 100644 (file)
@@ -294,7 +294,7 @@ static void display_smith_effect_list(const Smith &smith, const std::vector<Smit
  * @brief エッセンスを実際に付加する
  * @param mode エッセンスの大別ID
  */
-static void add_essence(player_type *player_ptr, SmithCategory mode)
+static void add_essence(player_type *player_ptr, SmithCategoryType mode)
 {
     OBJECT_IDX item;
     bool flag;
@@ -703,10 +703,10 @@ void do_cmd_kaji(player_type *player_ptr, bool only_browse)
         mode = choose_essence();
         if (mode == 0)
             break;
-        add_essence(player_ptr, i2enum<SmithCategory>(mode));
+        add_essence(player_ptr, i2enum<SmithCategoryType>(mode));
         break;
     case 5:
-        add_essence(player_ptr, SmithCategory::ENCHANT);
+        add_essence(player_ptr, SmithCategoryType::ENCHANT);
         break;
     }
 }
index 5ee3469..08c8a73 100644 (file)
@@ -242,7 +242,7 @@ std::optional<SmithEffectType> Smith::object_effect(const object_type *o_ptr)
  * @param category 鍛冶カテゴリ
  * @return 指定した鍛冶カテゴリの鍛冶効果のリスト
  */
-std::vector<SmithEffectType> Smith::get_effect_list(SmithCategory category)
+std::vector<SmithEffectType> Smith::get_effect_list(SmithCategoryType category)
 {
     std::vector<SmithEffectType> result;
 
index eb55d4e..fe1e223 100644 (file)
@@ -16,7 +16,7 @@ class ItemTester;
 struct smith_data_type;
 
 enum class SmithEffectType : int16_t;
-enum class SmithCategory;
+enum class SmithCategoryType;
 enum class SmithEssence : int16_t;
 enum class RandomArtActType : short;
 
@@ -32,7 +32,7 @@ public:
 
     static const std::vector<SmithEssence> &get_essence_list();
     static concptr get_essence_name(SmithEssence essence);
-    static std::vector<SmithEffectType> get_effect_list(SmithCategory category);
+    static std::vector<SmithEffectType> get_effect_list(SmithCategoryType category);
     static concptr get_effect_name(SmithEffectType effect);
     static std::string get_need_essences_desc(SmithEffectType effect);
     static std::vector<SmithEssence> get_need_essences(SmithEffectType effect);
index 835c806..a8ae719 100644 (file)
@@ -6,7 +6,7 @@
 #include "system/object-type-definition.h"
 #include "system/player-type-definition.h"
 
-ISmithInfo::ISmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption)
+ISmithInfo::ISmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption)
     : effect(effect)
     , name(name)
     , category(category)
@@ -20,7 +20,7 @@ TrFlags ISmithInfo::tr_flags() const
     return {};
 }
 
-BasicSmithInfo::BasicSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption, TrFlags add_flags)
+BasicSmithInfo::BasicSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption, TrFlags add_flags)
     : ISmithInfo(effect, name, category, std::move(need_essences), consumption)
     , add_flags(add_flags)
 {
@@ -71,17 +71,17 @@ bool BasicSmithInfo::can_give_smith_effect_impl(const object_type *o_ptr) const
     if (this->effect == SmithEffectType::EASY_2WEAPON) {
         return (o_ptr->tval == ItemKindType::GLOVES);
     }
-    if (this->category == SmithCategory::WEAPON_ATTR && o_ptr->is_ammo()) {
+    if (this->category == SmithCategoryType::WEAPON_ATTR && o_ptr->is_ammo()) {
         return this->add_flags.has_any_of({ TR_BRAND_ACID, TR_BRAND_ELEC, TR_BRAND_FIRE, TR_BRAND_COLD, TR_BRAND_POIS });
     }
-    if (this->category == SmithCategory::WEAPON_ATTR || this->category == SmithCategory::SLAYING) {
+    if (this->category == SmithCategoryType::WEAPON_ATTR || this->category == SmithCategoryType::SLAYING) {
         return o_ptr->is_melee_ammo();
     }
 
     return o_ptr->is_weapon_armour_ammo() && o_ptr->is_wearable();
 }
 
-ActivationSmithInfo::ActivationSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption, RandomArtActType act_idx)
+ActivationSmithInfo::ActivationSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption, RandomArtActType act_idx)
     : ISmithInfo(effect, name, category, std::move(need_essences), consumption)
     , act_idx(act_idx)
 {
@@ -109,7 +109,7 @@ bool ActivationSmithInfo::can_give_smith_effect(const object_type *o_ptr) const
     return o_ptr->is_weapon_armour_ammo() && o_ptr->is_wearable();
 }
 
-EnchantWeaponSmithInfo::EnchantWeaponSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption)
+EnchantWeaponSmithInfo::EnchantWeaponSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption)
     : ISmithInfo(effect, name, category, std::move(need_essences), consumption)
 {
 }
@@ -136,7 +136,7 @@ bool EnchantWeaponSmithInfo::can_give_smith_effect(const object_type *o_ptr) con
     return o_ptr->allow_enchant_weapon();
 }
 
-EnchantArmourSmithInfo::EnchantArmourSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption)
+EnchantArmourSmithInfo::EnchantArmourSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption)
     : ISmithInfo(effect, name, category, std::move(need_essences), consumption)
 {
 }
@@ -158,7 +158,7 @@ bool EnchantArmourSmithInfo::can_give_smith_effect(const object_type *o_ptr) con
     return o_ptr->is_armour();
 }
 
-SustainSmithInfo::SustainSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption)
+SustainSmithInfo::SustainSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption)
     : ISmithInfo(effect, name, category, std::move(need_essences), consumption)
 {
 }
@@ -178,7 +178,7 @@ bool SustainSmithInfo::can_give_smith_effect(const object_type *o_ptr) const
     return o_ptr->is_weapon_armour_ammo();
 }
 
-SlayingGlovesSmithInfo::SlayingGlovesSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption)
+SlayingGlovesSmithInfo::SlayingGlovesSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption)
     : BasicSmithInfo(effect, name, category, std::move(need_essences), consumption, {})
 {
 }
index 42c5e53..536867f 100644 (file)
@@ -8,7 +8,7 @@
 #include <vector>
 
 enum class SmithEffectType : int16_t;
-enum class SmithCategory;
+enum class SmithCategoryType;
 enum class SmithEssence : int16_t;
 enum class RandomArtActType : short;
 
@@ -56,12 +56,12 @@ public:
 
     SmithEffectType effect; //!< 鍛冶で与える効果の種類
     concptr name; //!< 鍛冶で与える能力の名称
-    SmithCategory category; //!< 鍛冶で与える能力が所属するグループ
+    SmithCategoryType category; //!< 鍛冶で与える能力が所属するグループ
     std::vector<SmithEssence> need_essences; //!< 能力を与えるのに必要なエッセンスのリスト
     int consumption; //!< 能力を与えるのに必要な消費量(need_essencesに含まれるエッセンスそれぞれについてこの量を消費)
 
 protected:
-    ISmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption);
+    ISmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption);
 };
 
 /*!
@@ -70,7 +70,7 @@ protected:
  */
 class BasicSmithInfo : public ISmithInfo {
 public:
-    BasicSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption, TrFlags add_flags);
+    BasicSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption, TrFlags add_flags);
     virtual bool add_essence(player_type *player_ptr, object_type *o_ptr, int number) const override;
     virtual void erase_essence(object_type *o_ptr) const override;
     virtual TrFlags tr_flags() const override;
@@ -87,7 +87,7 @@ private:
  */
 class ActivationSmithInfo : public ISmithInfo {
 public:
-    ActivationSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption, RandomArtActType act_idx);
+    ActivationSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption, RandomArtActType act_idx);
     virtual bool add_essence(player_type *player_ptr, object_type *o_ptr, int number) const override;
     virtual void erase_essence(object_type *) const override;
     virtual bool can_give_smith_effect(const object_type *o_ptr) const override;
@@ -102,7 +102,7 @@ private:
  */
 class EnchantWeaponSmithInfo : public ISmithInfo {
 public:
-    EnchantWeaponSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption);
+    EnchantWeaponSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption);
     virtual bool add_essence(player_type *player_ptr, object_type *o_ptr, int number) const override;
     virtual void erase_essence(object_type *) const override {}
     virtual bool can_give_smith_effect(const object_type *o_ptr) const override;
@@ -114,7 +114,7 @@ public:
  */
 class EnchantArmourSmithInfo : public ISmithInfo {
 public:
-    EnchantArmourSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption);
+    EnchantArmourSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption);
     virtual bool add_essence(player_type *player_ptr, object_type *o_ptr, int number) const override;
     virtual void erase_essence(object_type *) const override {}
     virtual bool can_give_smith_effect(const object_type *o_ptr) const override;
@@ -126,7 +126,7 @@ public:
  */
 class SustainSmithInfo : public ISmithInfo {
 public:
-    SustainSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption);
+    SustainSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption);
     virtual bool add_essence(player_type *player_ptr, object_type *o_ptr, int number) const override;
     virtual void erase_essence(object_type *) const override {}
     virtual bool can_give_smith_effect(const object_type *o_ptr) const override;
@@ -138,7 +138,7 @@ public:
  */
 class SlayingGlovesSmithInfo : public BasicSmithInfo {
 public:
-    SlayingGlovesSmithInfo(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption);
+    SlayingGlovesSmithInfo(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption);
     virtual bool add_essence(player_type *player_ptr, object_type *o_ptr, int number) const override;
     virtual void erase_essence(object_type *) const override;
 
index bd3546e..0188c02 100644 (file)
@@ -357,12 +357,12 @@ const std::vector<essence_drain_type> Smith::essence_drain_info_table = {
 namespace {
 
 template <typename T, typename... Args>
-std::shared_ptr<ISmithInfo> make_info(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption, Args &&...args)
+std::shared_ptr<ISmithInfo> make_info(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption, Args &&...args)
 {
     return std::make_shared<T>(effect, name, category, std::move(need_essences), consumption, std::forward<Args>(args)...);
 }
 
-std::shared_ptr<ISmithInfo> make_basic_smith_info(SmithEffectType effect, concptr name, SmithCategory category, std::vector<SmithEssence> need_essences, int consumption, TrFlags add_flags)
+std::shared_ptr<ISmithInfo> make_basic_smith_info(SmithEffectType effect, concptr name, SmithCategoryType category, std::vector<SmithEssence> need_essences, int consumption, TrFlags add_flags)
 {
     return make_info<BasicSmithInfo>(effect, name, category, std::move(need_essences), consumption, std::move(add_flags));
 }
@@ -373,155 +373,155 @@ std::shared_ptr<ISmithInfo> make_basic_smith_info(SmithEffectType effect, concpt
  * @brief 鍛冶情報テーブル
  */
 const std::vector<std::shared_ptr<ISmithInfo>> Smith::smith_info_table = {
-    make_basic_smith_info(SmithEffectType::NONE, _("なし", "None"), SmithCategory::NONE, std::vector<SmithEssence>{ SmithEssence::NONE }, 0, {}),
-
-    make_basic_smith_info(SmithEffectType::STR, _("腕力", "strength"), SmithCategory::PVAL, { SmithEssence::STR }, 20, { TR_STR }),
-    make_basic_smith_info(SmithEffectType::INT, _("知能", "intelligence"), SmithCategory::PVAL, { SmithEssence::INT }, 20, { TR_INT }),
-    make_basic_smith_info(SmithEffectType::WIS, _("賢さ", "wisdom"), SmithCategory::PVAL, { SmithEssence::WIS }, 20, { TR_WIS }),
-    make_basic_smith_info(SmithEffectType::DEX, _("器用さ", "dexterity"), SmithCategory::PVAL, { SmithEssence::DEX }, 20, { TR_DEX }),
-    make_basic_smith_info(SmithEffectType::CON, _("耐久力", "constitution"), SmithCategory::PVAL, { SmithEssence::CON }, 20, { TR_CON }),
-    make_basic_smith_info(SmithEffectType::CHR, _("魅力", "charisma"), SmithCategory::PVAL, { SmithEssence::CHR }, 20, { TR_CHR }),
-
-    make_basic_smith_info(SmithEffectType::SUST_STR, _("腕力維持", "sustain strength"), SmithCategory::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_STR }),
-    make_basic_smith_info(SmithEffectType::SUST_INT, _("知能維持", "sustain intelligence"), SmithCategory::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_INT }),
-    make_basic_smith_info(SmithEffectType::SUST_WIS, _("賢さ維持", "sustain wisdom"), SmithCategory::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_WIS }),
-    make_basic_smith_info(SmithEffectType::SUST_DEX, _("器用さ維持", "sustain dexterity"), SmithCategory::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_DEX }),
-    make_basic_smith_info(SmithEffectType::SUST_CON, _("耐久力維持", "sustain constitution"), SmithCategory::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_CON }),
-    make_basic_smith_info(SmithEffectType::SUST_CHR, _("魅力維持", "sustain charisma"), SmithCategory::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_CHR }),
-
-    make_basic_smith_info(SmithEffectType::MAGIC_MASTERY, _("魔力支配", "magic mastery"), SmithCategory::PVAL, { SmithEssence::MAGIC_MASTERY }, 20, { TR_MAGIC_MASTERY }),
-    make_basic_smith_info(SmithEffectType::STEALTH, _("隠密", "stealth"), SmithCategory::PVAL, { SmithEssence::STEALTH }, 40, { TR_STEALTH }),
-    make_basic_smith_info(SmithEffectType::SEARCH, _("探索", "searching"), SmithCategory::PVAL, { SmithEssence::SEARCH }, 15, { TR_SEARCH }),
-    make_basic_smith_info(SmithEffectType::INFRA, _("赤外線視力", "infravision"), SmithCategory::PVAL, { SmithEssence::INFRA }, 15, { TR_INFRA }),
-    make_basic_smith_info(SmithEffectType::TUNNEL, _("採掘", "digging"), SmithCategory::PVAL, { SmithEssence::TUNNEL }, 15, { TR_TUNNEL }),
-    make_basic_smith_info(SmithEffectType::SPEED, _("スピード", "speed"), SmithCategory::PVAL, { SmithEssence::SPEED }, 12, { TR_SPEED }),
-    make_basic_smith_info(SmithEffectType::BLOWS, _("追加攻撃", "extra attack"), SmithCategory::WEAPON_ATTR, { SmithEssence::BLOWS }, 20, { TR_BLOWS }),
-
-    make_basic_smith_info(SmithEffectType::CHAOTIC, _("カオス攻撃", "chaos brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::CHAOTIC }, 15, { TR_CHAOTIC }),
-    make_basic_smith_info(SmithEffectType::VAMPIRIC, _("吸血攻撃", "vampiric brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::VAMPIRIC }, 60, { TR_VAMPIRIC }),
-    make_basic_smith_info(SmithEffectType::EARTHQUAKE, _("地震攻撃", "quake brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::EATHQUAKE }, 15, { TR_EARTHQUAKE }),
-    make_basic_smith_info(SmithEffectType::BRAND_POIS, _("毒殺", "poison brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_POIS }, 20, { TR_BRAND_POIS }),
-    make_basic_smith_info(SmithEffectType::BRAND_ACID, _("溶解", "acid brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_ACID }, 20, { TR_BRAND_ACID }),
-    make_basic_smith_info(SmithEffectType::BRAND_ELEC, _("電撃", "electric brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_ELEC }, 20, { TR_BRAND_ELEC }),
-    make_basic_smith_info(SmithEffectType::BRAND_FIRE, _("焼棄", "fire brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_FIRE }, 20, { TR_BRAND_FIRE }),
-    make_basic_smith_info(SmithEffectType::BRAND_COLD, _("凍結", "cold brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_COLD }, 20, { TR_BRAND_COLD }),
-    make_basic_smith_info(SmithEffectType::VORPAL, _("切れ味", "sharpness"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_ACID, SmithEssence::BRAND_ELEC, SmithEssence::BRAND_FIRE, SmithEssence::BRAND_COLD }, 10, { TR_VORPAL }),
-    make_basic_smith_info(SmithEffectType::BRAND_MAGIC, _("魔術属性攻撃", "magic brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_MAGIC }, 20, { TR_BRAND_MAGIC }),
-    make_basic_smith_info(SmithEffectType::XTRA_MIGHT, _("射撃倍率強化", "enhance firing power"), SmithCategory::WEAPON_ATTR, { SmithEssence::STRENGTHEN_BOW }, 50, { TR_XTRA_MIGHT }),
-    make_basic_smith_info(SmithEffectType::XTRA_SHOTS, _("射撃速度強化", "enhance firing rate"), SmithCategory::WEAPON_ATTR, { SmithEssence::STRENGTHEN_BOW }, 50, { TR_XTRA_SHOTS }),
-
-    make_basic_smith_info(SmithEffectType::IM_ACID, _("酸免疫", "acid immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_ACID }, 200, { TR_IM_ACID }),
-    make_basic_smith_info(SmithEffectType::IM_ELEC, _("電撃免疫", "electric immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_ELEC }, 200, { TR_IM_ELEC }),
-    make_basic_smith_info(SmithEffectType::IM_FIRE, _("火炎免疫", "fire immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_FIRE }, 200, { TR_IM_FIRE }),
-    make_basic_smith_info(SmithEffectType::IM_COLD, _("冷気免疫", "cold immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_COLD }, 200, { TR_IM_COLD }),
-    make_basic_smith_info(SmithEffectType::REFLECT, _("反射", "reflection"), SmithCategory::RESISTANCE, { SmithEssence::REFLECT }, 20, { TR_REFLECT }),
-
-    make_basic_smith_info(SmithEffectType::RES_ACID, _("耐酸", "resistance to acid"), SmithCategory::RESISTANCE, { SmithEssence::RES_ACID }, 15, { TR_RES_ACID }),
-    make_basic_smith_info(SmithEffectType::RES_ELEC, _("耐電撃", "resistance to electric"), SmithCategory::RESISTANCE, { SmithEssence::RES_ELEC }, 15, { TR_RES_ELEC }),
-    make_basic_smith_info(SmithEffectType::RES_FIRE, _("耐火炎", "resistance to fire"), SmithCategory::RESISTANCE, { SmithEssence::RES_FIRE }, 15, { TR_RES_FIRE }),
-    make_basic_smith_info(SmithEffectType::RES_COLD, _("耐冷気", "resistance to cold"), SmithCategory::RESISTANCE, { SmithEssence::RES_COLD }, 15, { TR_RES_COLD }),
-    make_basic_smith_info(SmithEffectType::RES_POIS, _("耐毒", "resistance to poison"), SmithCategory::RESISTANCE, { SmithEssence::RES_POIS }, 25, { TR_RES_POIS }),
-    make_basic_smith_info(SmithEffectType::RES_FEAR, _("耐恐怖", "resistance to fear"), SmithCategory::RESISTANCE, { SmithEssence::RES_FEAR }, 20, { TR_RES_FEAR }),
-    make_basic_smith_info(SmithEffectType::RES_LITE, _("耐閃光", "resistance to light"), SmithCategory::RESISTANCE, { SmithEssence::RES_LITE }, 20, { TR_RES_LITE }),
-    make_basic_smith_info(SmithEffectType::RES_DARK, _("耐暗黒", "resistance to dark"), SmithCategory::RESISTANCE, { SmithEssence::RES_DARK }, 20, { TR_RES_DARK }),
-    make_basic_smith_info(SmithEffectType::RES_BLIND, _("耐盲目", "resistance to blind"), SmithCategory::RESISTANCE, { SmithEssence::RES_BLIND }, 20, { TR_RES_BLIND }),
-    make_basic_smith_info(SmithEffectType::RES_CONF, _("耐混乱", "resistance to confusion"), SmithCategory::RESISTANCE, { SmithEssence::RES_CONF }, 20, { TR_RES_CONF }),
-    make_basic_smith_info(SmithEffectType::RES_SOUND, _("耐轟音", "resistance to sound"), SmithCategory::RESISTANCE, { SmithEssence::RES_SOUND }, 20, { TR_RES_SOUND }),
-    make_basic_smith_info(SmithEffectType::RES_SHARDS, _("耐破片", "resistance to shard"), SmithCategory::RESISTANCE, { SmithEssence::RES_SHARDS }, 20, { TR_RES_SHARDS }),
-    make_basic_smith_info(SmithEffectType::RES_NETHER, _("耐地獄", "resistance to nether"), SmithCategory::RESISTANCE, { SmithEssence::RES_NETHER }, 20, { TR_RES_NETHER }),
-    make_basic_smith_info(SmithEffectType::RES_NEXUS, _("耐因果混乱", "resistance to nexus"), SmithCategory::RESISTANCE, { SmithEssence::RES_NEXUS }, 20, { TR_RES_NEXUS }),
-    make_basic_smith_info(SmithEffectType::RES_CHAOS, _("耐カオス", "resistance to chaos"), SmithCategory::RESISTANCE, { SmithEssence::RES_CHAOS }, 20, { TR_RES_CHAOS }),
-    make_basic_smith_info(SmithEffectType::RES_DISEN, _("耐劣化", "resistance to disenchantment"), SmithCategory::RESISTANCE, { SmithEssence::RES_DISEN }, 20, { TR_RES_DISEN }),
-    make_basic_smith_info(SmithEffectType::RES_WATER, _("耐水", "resistance to water"), SmithCategory::RESISTANCE, { SmithEssence::RES_WATER }, 20, { TR_RES_WATER }),
-    make_basic_smith_info(SmithEffectType::RES_TIME, _("耐時間逆転", "resistance to time"), SmithCategory::RESISTANCE, { SmithEssence::RES_TIME }, 20, { TR_RES_TIME }),
-    make_basic_smith_info(SmithEffectType::RES_CURSE, _("耐呪力", "resistance to curse"), SmithCategory::RESISTANCE, { SmithEssence::RES_CURSE }, 20, { TR_RES_CURSE }),
-
-    make_basic_smith_info(SmithEffectType::HOLD_EXP, _("経験値維持", "hold experience"), SmithCategory::ABILITY, { SmithEssence::HOLD_EXP }, 20, { TR_HOLD_EXP }),
-    make_basic_smith_info(SmithEffectType::FREE_ACT, _("麻痺知らず", "free action"), SmithCategory::ABILITY, { SmithEssence::FREE_ACT }, 20, { TR_FREE_ACT }),
-    make_basic_smith_info(SmithEffectType::WARNING, _("警告", "warning"), SmithCategory::ABILITY, { SmithEssence::WARNING }, 20, { TR_WARNING }),
-    make_basic_smith_info(SmithEffectType::LEVITATION, _("浮遊", "levitation"), SmithCategory::ABILITY, { SmithEssence::LEVITATION }, 20, { TR_LEVITATION }),
-    make_basic_smith_info(SmithEffectType::SEE_INVIS, _("可視透明", "see invisible"), SmithCategory::ABILITY, { SmithEssence::SEE_INVIS }, 20, { TR_SEE_INVIS }),
-    make_basic_smith_info(SmithEffectType::SLOW_DIGEST, _("遅消化", "slow digestion"), SmithCategory::ABILITY, { SmithEssence::SLOW_DIGEST }, 15, { TR_SLOW_DIGEST }),
-    make_basic_smith_info(SmithEffectType::REGEN, _("急速回復", "regeneration"), SmithCategory::ABILITY, { SmithEssence::REGEN }, 20, { TR_REGEN }),
-    make_basic_smith_info(SmithEffectType::TELEPORT, _("テレポート", "teleport"), SmithCategory::ABILITY, { SmithEssence::TELEPORT }, 25, { TR_TELEPORT }),
-    make_basic_smith_info(SmithEffectType::NO_MAGIC, _("反魔法", "anti magic"), SmithCategory::ABILITY, { SmithEssence::NO_MAGIC }, 15, { TR_NO_MAGIC }),
-    make_basic_smith_info(SmithEffectType::LITE, _("永久光源", "permanent light"), SmithCategory::ABILITY, { SmithEssence::LITE }, 15, { TR_LITE_1 }),
-    make_basic_smith_info(SmithEffectType::NO_TELE, _("反テレポート", "prevent teleportation"), SmithCategory::ABILITY, { SmithEssence::NO_TELE }, 15, { TR_NO_TELE }),
-
-    make_basic_smith_info(SmithEffectType::SLAY_EVIL, _("邪悪倍打", "slay evil"), SmithCategory::SLAYING, { SmithEssence::SLAY_EVIL }, 100, { TR_SLAY_EVIL }),
-    make_basic_smith_info(SmithEffectType::SLAY_ANIMAL, _("動物倍打", "slay animal"), SmithCategory::SLAYING, { SmithEssence::SLAY_ANIMAL }, 20, { TR_SLAY_ANIMAL }),
-    make_basic_smith_info(SmithEffectType::SLAY_UNDEAD, _("不死倍打", "slay undead"), SmithCategory::SLAYING, { SmithEssence::SLAY_UNDEAD }, 20, { TR_SLAY_UNDEAD }),
-    make_basic_smith_info(SmithEffectType::SLAY_DEMON, _("悪魔倍打", "slay demon"), SmithCategory::SLAYING, { SmithEssence::SLAY_DEMON }, 20, { TR_SLAY_DEMON }),
-    make_basic_smith_info(SmithEffectType::SLAY_ORC, _("オーク倍打", "slay orc"), SmithCategory::SLAYING, { SmithEssence::SLAY_ORC }, 20, { TR_SLAY_ORC }),
-    make_basic_smith_info(SmithEffectType::SLAY_TROLL, _("トロル倍打", "slay troll"), SmithCategory::SLAYING, { SmithEssence::SLAY_TROLL }, 20, { TR_SLAY_TROLL }),
-    make_basic_smith_info(SmithEffectType::SLAY_GIANT, _("巨人倍打", "slay giant"), SmithCategory::SLAYING, { SmithEssence::SLAY_GIANT }, 20, { TR_SLAY_GIANT }),
-    make_basic_smith_info(SmithEffectType::SLAY_DRAGON, _("竜倍打", "slay dragon"), SmithCategory::SLAYING, { SmithEssence::SLAY_DRAGON }, 20, { TR_SLAY_DRAGON }),
-    make_basic_smith_info(SmithEffectType::SLAY_HUMAN, _("人間倍打", "slay human"), SmithCategory::SLAYING, { SmithEssence::SLAY_HUMAN }, 20, { TR_SLAY_HUMAN }),
-    make_basic_smith_info(SmithEffectType::SLAY_GOOD, _("善良倍打", "slay good"), SmithCategory::SLAYING, { SmithEssence::SLAY_GOOD }, 20, { TR_SLAY_GOOD }),
-
-    make_basic_smith_info(SmithEffectType::KILL_EVIL, _("邪悪倍倍打", "kill evil"), SmithCategory::NONE, { SmithEssence::SLAY_EVIL }, 0, { TR_KILL_EVIL }), // 強力すぎるため無効(SmithCategory:NONE)
-    make_basic_smith_info(SmithEffectType::KILL_ANIMAL, _("動物倍倍打", "kill animal"), SmithCategory::SLAYING, { SmithEssence::SLAY_ANIMAL }, 60, { TR_KILL_ANIMAL }),
-    make_basic_smith_info(SmithEffectType::KILL_UNDEAD, _("不死倍倍打", "kill undead"), SmithCategory::SLAYING, { SmithEssence::SLAY_UNDEAD }, 60, { TR_KILL_UNDEAD }),
-    make_basic_smith_info(SmithEffectType::KILL_DEMON, _("悪魔倍倍打", "kill demon"), SmithCategory::SLAYING, { SmithEssence::SLAY_DEMON }, 60, { TR_KILL_DEMON }),
-    make_basic_smith_info(SmithEffectType::KILL_ORC, _("オーク倍倍打", "kill orc"), SmithCategory::SLAYING, { SmithEssence::SLAY_ORC }, 60, { TR_KILL_ORC }),
-    make_basic_smith_info(SmithEffectType::KILL_TROLL, _("トロル倍倍打", "kill troll"), SmithCategory::SLAYING, { SmithEssence::SLAY_TROLL }, 60, { TR_KILL_TROLL }),
-    make_basic_smith_info(SmithEffectType::KILL_GIANT, _("巨人倍倍打", "kill giant"), SmithCategory::SLAYING, { SmithEssence::SLAY_GIANT }, 60, { TR_KILL_GIANT }),
-    make_basic_smith_info(SmithEffectType::KILL_DRAGON, _("竜倍倍打", "kill dragon"), SmithCategory::SLAYING, { SmithEssence::SLAY_DRAGON }, 60, { TR_KILL_DRAGON }),
-    make_basic_smith_info(SmithEffectType::KILL_HUMAN, _("人間倍倍打", "kill human"), SmithCategory::SLAYING, { SmithEssence::SLAY_HUMAN }, 60, { TR_KILL_HUMAN }),
-    make_basic_smith_info(SmithEffectType::KILL_GOOD, _("善良倍倍打", "kill good"), SmithCategory::SLAYING, { SmithEssence::SLAY_GOOD }, 60, { TR_KILL_GOOD }),
-
-    make_basic_smith_info(SmithEffectType::TELEPATHY, _("テレパシー", "telepathy"), SmithCategory::ESP, { SmithEssence::TELEPATHY }, 15, { TR_TELEPATHY }),
-    make_basic_smith_info(SmithEffectType::ESP_ANIMAL, _("動物ESP", "sense animal"), SmithCategory::ESP, { SmithEssence::SLAY_ANIMAL }, 40, { TR_ESP_ANIMAL }),
-    make_basic_smith_info(SmithEffectType::ESP_UNDEAD, _("不死ESP", "sense undead"), SmithCategory::ESP, { SmithEssence::SLAY_UNDEAD }, 40, { TR_ESP_UNDEAD }),
-    make_basic_smith_info(SmithEffectType::ESP_DEMON, _("悪魔ESP", "sense demon"), SmithCategory::ESP, { SmithEssence::SLAY_DEMON }, 40, { TR_ESP_DEMON }),
-    make_basic_smith_info(SmithEffectType::ESP_ORC, _("オークESP", "sense orc"), SmithCategory::ESP, { SmithEssence::SLAY_ORC }, 40, { TR_ESP_ORC }),
-    make_basic_smith_info(SmithEffectType::ESP_TROLL, _("トロルESP", "sense troll"), SmithCategory::ESP, { SmithEssence::SLAY_TROLL }, 40, { TR_ESP_TROLL }),
-    make_basic_smith_info(SmithEffectType::ESP_GIANT, _("巨人ESP", "sense giant"), SmithCategory::ESP, { SmithEssence::SLAY_GIANT }, 40, { TR_ESP_GIANT }),
-    make_basic_smith_info(SmithEffectType::ESP_DRAGON, _("竜ESP", "sense dragon"), SmithCategory::ESP, { SmithEssence::SLAY_DRAGON }, 40, { TR_ESP_DRAGON }),
-    make_basic_smith_info(SmithEffectType::ESP_HUMAN, _("人間ESP", "sense human"), SmithCategory::ESP, { SmithEssence::SLAY_HUMAN }, 40, { TR_ESP_HUMAN }),
-    make_basic_smith_info(SmithEffectType::ESP_GOOD, _("善良ESP", "sense good"), SmithCategory::ESP, { SmithEssence::SLAY_GOOD }, 40, { TR_ESP_GOOD }),
-    make_basic_smith_info(SmithEffectType::ESP_UNIQUE, _("ユニークESP", "sense unique"), SmithCategory::ESP, { SmithEssence::UNIQUE }, 100, { TR_ESP_UNIQUE }),
-
-    make_basic_smith_info(SmithEffectType::SH_FIRE, _("火炎オーラ", "fiery sheath"), SmithCategory::ETC, { SmithEssence::RES_FIRE, SmithEssence::BRAND_FIRE }, 50, { TR_RES_FIRE, TR_SH_FIRE }),
-    make_basic_smith_info(SmithEffectType::SH_ELEC, _("電撃オーラ", "electric sheath"), SmithCategory::ETC, { SmithEssence::RES_ELEC, SmithEssence::BRAND_ELEC }, 50, { TR_RES_ELEC, TR_SH_ELEC }),
-    make_basic_smith_info(SmithEffectType::SH_COLD, _("冷気オーラ", "sheath of coldness"), SmithCategory::ETC, { SmithEssence::RES_COLD, SmithEssence::BRAND_COLD }, 50, { TR_RES_COLD, TR_SH_COLD }),
-
-    make_basic_smith_info(SmithEffectType::RESISTANCE, _("全耐性", "resistance"), SmithCategory::RESISTANCE, { SmithEssence::RES_ACID, SmithEssence::RES_ELEC, SmithEssence::RES_FIRE, SmithEssence::RES_COLD }, 150, { TR_RES_ACID, TR_RES_ELEC, TR_RES_FIRE, TR_RES_COLD }),
-    make_info<SlayingGlovesSmithInfo>(SmithEffectType::SLAY_GLOVE, _("殺戮の小手", "gauntlets of slaying"), SmithCategory::ETC, { SmithEssence::ATTACK }, 200),
-    make_basic_smith_info(SmithEffectType::EASY_2WEAPON, _("源氏の小手", "guantlets of Genji"), SmithCategory::ETC, { SmithEssence::EASY2_WEAPON }, 20, { TR_EASY2_WEAPON }),
-
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_QUAKE, _("地震", "quake"), SmithCategory::ACTIVATION, { SmithEssence::EATHQUAKE }, 15, RandomArtActType::QUAKE),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_ACID, _("酸耐性", "resist acid"), SmithCategory::ACTIVATION, { SmithEssence::RES_ACID }, 30, RandomArtActType::RESIST_ACID),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_ELEC, _("電撃耐性", "resist electricity"), SmithCategory::ACTIVATION, { SmithEssence::RES_ELEC }, 30, RandomArtActType::RESIST_ELEC),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_FIRE, _("火炎耐性", "resist fire"), SmithCategory::ACTIVATION, { SmithEssence::RES_FIRE }, 30, RandomArtActType::RESIST_FIRE),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_COLD, _("冷気耐性", "resist cold"), SmithCategory::ACTIVATION, { SmithEssence::RES_COLD }, 30, RandomArtActType::RESIST_COLD),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_POIS, _("毒耐性", "resist poison"), SmithCategory::ACTIVATION, { SmithEssence::RES_POIS }, 40, RandomArtActType::RESIST_POIS),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_PHASE_DOOR, _("ショート・テレポート", "blink"), SmithCategory::ACTIVATION, { SmithEssence::TELEPORT }, 30, RandomArtActType::PHASE_DOOR),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_TELEPORT, _("テレポート", "teleport"), SmithCategory::ACTIVATION, { SmithEssence::TELEPORT }, 40, RandomArtActType::TELEPORT),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_SPEED, _("スピード", "speed"), SmithCategory::ACTIVATION, { SmithEssence::SPEED }, 25, RandomArtActType::SPEED),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_STONE_MUD, _("岩石溶解", "stone to mud"), SmithCategory::ACTIVATION, { SmithEssence::TUNNEL }, 100, RandomArtActType::STONE_MUD),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_LIGHT, _("イルミネーション", "light area"), SmithCategory::ACTIVATION, { SmithEssence::LITE }, 30, RandomArtActType::LIGHT),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_MAP_LIGHT, _("魔法の地図と光", "light & map area"), SmithCategory::ACTIVATION, { SmithEssence::SEARCH, SmithEssence::LITE }, 30, RandomArtActType::MAP_LIGHT),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DETECT_ALL, _("全感知", "detection"), SmithCategory::ACTIVATION, { SmithEssence::SEARCH, SmithEssence::TELEPATHY }, 30, RandomArtActType::DETECT_ALL),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DETECT_UNIQUE, _("階にいるユニークモンスターを表示", "list of the uniques on the level"), SmithCategory::ACTIVATION, { SmithEssence::UNIQUE }, 100, RandomArtActType::DETECT_UNIQUE),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_REST_EXP, _("経験値復活", "restore experience"), SmithCategory::ACTIVATION, { SmithEssence::HOLD_EXP }, 30, RandomArtActType::REST_EXP),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_REST_ALL, _("全ステータスと経験値復活", "restore stats and experience"), SmithCategory::ACTIVATION, { SmithEssence::SUST_STATUS, SmithEssence::HOLD_EXP }, 40, RandomArtActType::REST_ALL),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_PROT_EVIL, _("対邪悪結界", "protect evil"), SmithCategory::ACTIVATION, { SmithEssence::SLAY_EVIL }, 100, RandomArtActType::PROT_EVIL),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DISP_EVIL, _("邪悪退散", "dispel evil"), SmithCategory::ACTIVATION, { SmithEssence::SLAY_EVIL }, 100, RandomArtActType::DISP_EVIL),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DISP_GOOD, _("善良退散", "dispel good"), SmithCategory::ACTIVATION, { SmithEssence::SLAY_GOOD }, 50, RandomArtActType::DISP_GOOD),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_PESTICIDE, _("害虫駆除", "dispel pests"), SmithCategory::ACTIVATION, { SmithEssence::BRAND_POIS }, 30, RandomArtActType::PESTICIDE),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_ACID, _("アシッド・ボール", "ball of acid"), SmithCategory::ACTIVATION, { SmithEssence::BRAND_ACID }, 40, RandomArtActType::BA_ACID_1),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_ELEC, _("サンダー・ボール", "ball of lightning"), SmithCategory::ACTIVATION, { SmithEssence::BRAND_ELEC }, 40, RandomArtActType::BA_ELEC_2),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_FIRE, _("ファイア・ボール", "ball of fire"), SmithCategory::ACTIVATION, { SmithEssence::BRAND_FIRE }, 40, RandomArtActType::BA_FIRE_4),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_COLD, _("アイス・ボール", "ball of cold"), SmithCategory::ACTIVATION, { SmithEssence::BRAND_COLD }, 40, RandomArtActType::BA_COLD_2),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_NUKE, _("放射能球", "ball of nuke"), SmithCategory::ACTIVATION, { SmithEssence::BRAND_POIS, SmithEssence::CHAOTIC }, 30, RandomArtActType::BA_NUKE_1),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_SUNLIGHT, _("太陽光線", "beam of sunlight"), SmithCategory::ACTIVATION, { SmithEssence::LITE }, 40, RandomArtActType::SUNLIGHT),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DRAIN, _("吸血の矢", "drain bolt"), SmithCategory::ACTIVATION, { SmithEssence::VAMPIRIC }, 100, RandomArtActType::DRAIN_1),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_CONFUSE, _("パニック・モンスター", "confuse monster"), SmithCategory::ACTIVATION, { SmithEssence::CHAOTIC }, 30, RandomArtActType::CONFUSE),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_SATIATE, _("空腹充足", "satisfy hunger"), SmithCategory::ACTIVATION, { SmithEssence::SLOW_DIGEST }, 50, RandomArtActType::SATIATE),
-    make_info<ActivationSmithInfo>(SmithEffectType::ACT_CURE_700, _("体力回復", "heal"), SmithCategory::ACTIVATION, { SmithEssence::REGEN }, 100, RandomArtActType::CURE_700),
-
-    make_info<EnchantWeaponSmithInfo>(SmithEffectType::ATTACK, _("攻撃", "weapon enchant"), SmithCategory::ENCHANT, { SmithEssence::ATTACK }, 30),
-    make_info<EnchantArmourSmithInfo>(SmithEffectType::AC, _("防御", "armor enchant"), SmithCategory::ENCHANT, { SmithEssence::AC }, 15),
-    make_info<SustainSmithInfo>(SmithEffectType::SUSTAIN, _("装備保持", "elements proof"), SmithCategory::ENCHANT, { SmithEssence::RES_ACID, SmithEssence::RES_ELEC, SmithEssence::RES_FIRE, SmithEssence::RES_COLD }, 10),
+    make_basic_smith_info(SmithEffectType::NONE, _("なし", "None"), SmithCategoryType::NONE, std::vector<SmithEssence>{ SmithEssence::NONE }, 0, {}),
+
+    make_basic_smith_info(SmithEffectType::STR, _("腕力", "strength"), SmithCategoryType::PVAL, { SmithEssence::STR }, 20, { TR_STR }),
+    make_basic_smith_info(SmithEffectType::INT, _("知能", "intelligence"), SmithCategoryType::PVAL, { SmithEssence::INT }, 20, { TR_INT }),
+    make_basic_smith_info(SmithEffectType::WIS, _("賢さ", "wisdom"), SmithCategoryType::PVAL, { SmithEssence::WIS }, 20, { TR_WIS }),
+    make_basic_smith_info(SmithEffectType::DEX, _("器用さ", "dexterity"), SmithCategoryType::PVAL, { SmithEssence::DEX }, 20, { TR_DEX }),
+    make_basic_smith_info(SmithEffectType::CON, _("耐久力", "constitution"), SmithCategoryType::PVAL, { SmithEssence::CON }, 20, { TR_CON }),
+    make_basic_smith_info(SmithEffectType::CHR, _("魅力", "charisma"), SmithCategoryType::PVAL, { SmithEssence::CHR }, 20, { TR_CHR }),
+
+    make_basic_smith_info(SmithEffectType::SUST_STR, _("腕力維持", "sustain strength"), SmithCategoryType::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_STR }),
+    make_basic_smith_info(SmithEffectType::SUST_INT, _("知能維持", "sustain intelligence"), SmithCategoryType::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_INT }),
+    make_basic_smith_info(SmithEffectType::SUST_WIS, _("賢さ維持", "sustain wisdom"), SmithCategoryType::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_WIS }),
+    make_basic_smith_info(SmithEffectType::SUST_DEX, _("器用さ維持", "sustain dexterity"), SmithCategoryType::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_DEX }),
+    make_basic_smith_info(SmithEffectType::SUST_CON, _("耐久力維持", "sustain constitution"), SmithCategoryType::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_CON }),
+    make_basic_smith_info(SmithEffectType::SUST_CHR, _("魅力維持", "sustain charisma"), SmithCategoryType::ABILITY, { SmithEssence::SUST_STATUS }, 15, { TR_SUST_CHR }),
+
+    make_basic_smith_info(SmithEffectType::MAGIC_MASTERY, _("魔力支配", "magic mastery"), SmithCategoryType::PVAL, { SmithEssence::MAGIC_MASTERY }, 20, { TR_MAGIC_MASTERY }),
+    make_basic_smith_info(SmithEffectType::STEALTH, _("隠密", "stealth"), SmithCategoryType::PVAL, { SmithEssence::STEALTH }, 40, { TR_STEALTH }),
+    make_basic_smith_info(SmithEffectType::SEARCH, _("探索", "searching"), SmithCategoryType::PVAL, { SmithEssence::SEARCH }, 15, { TR_SEARCH }),
+    make_basic_smith_info(SmithEffectType::INFRA, _("赤外線視力", "infravision"), SmithCategoryType::PVAL, { SmithEssence::INFRA }, 15, { TR_INFRA }),
+    make_basic_smith_info(SmithEffectType::TUNNEL, _("採掘", "digging"), SmithCategoryType::PVAL, { SmithEssence::TUNNEL }, 15, { TR_TUNNEL }),
+    make_basic_smith_info(SmithEffectType::SPEED, _("スピード", "speed"), SmithCategoryType::PVAL, { SmithEssence::SPEED }, 12, { TR_SPEED }),
+    make_basic_smith_info(SmithEffectType::BLOWS, _("追加攻撃", "extra attack"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BLOWS }, 20, { TR_BLOWS }),
+
+    make_basic_smith_info(SmithEffectType::CHAOTIC, _("カオス攻撃", "chaos brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::CHAOTIC }, 15, { TR_CHAOTIC }),
+    make_basic_smith_info(SmithEffectType::VAMPIRIC, _("吸血攻撃", "vampiric brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::VAMPIRIC }, 60, { TR_VAMPIRIC }),
+    make_basic_smith_info(SmithEffectType::EARTHQUAKE, _("地震攻撃", "quake brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::EATHQUAKE }, 15, { TR_EARTHQUAKE }),
+    make_basic_smith_info(SmithEffectType::BRAND_POIS, _("毒殺", "poison brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_POIS }, 20, { TR_BRAND_POIS }),
+    make_basic_smith_info(SmithEffectType::BRAND_ACID, _("溶解", "acid brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_ACID }, 20, { TR_BRAND_ACID }),
+    make_basic_smith_info(SmithEffectType::BRAND_ELEC, _("電撃", "electric brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_ELEC }, 20, { TR_BRAND_ELEC }),
+    make_basic_smith_info(SmithEffectType::BRAND_FIRE, _("焼棄", "fire brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_FIRE }, 20, { TR_BRAND_FIRE }),
+    make_basic_smith_info(SmithEffectType::BRAND_COLD, _("凍結", "cold brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_COLD }, 20, { TR_BRAND_COLD }),
+    make_basic_smith_info(SmithEffectType::VORPAL, _("切れ味", "sharpness"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_ACID, SmithEssence::BRAND_ELEC, SmithEssence::BRAND_FIRE, SmithEssence::BRAND_COLD }, 10, { TR_VORPAL }),
+    make_basic_smith_info(SmithEffectType::BRAND_MAGIC, _("魔術属性攻撃", "magic brand"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::BRAND_MAGIC }, 20, { TR_BRAND_MAGIC }),
+    make_basic_smith_info(SmithEffectType::XTRA_MIGHT, _("射撃倍率強化", "enhance firing power"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::STRENGTHEN_BOW }, 50, { TR_XTRA_MIGHT }),
+    make_basic_smith_info(SmithEffectType::XTRA_SHOTS, _("射撃速度強化", "enhance firing rate"), SmithCategoryType::WEAPON_ATTR, { SmithEssence::STRENGTHEN_BOW }, 50, { TR_XTRA_SHOTS }),
+
+    make_basic_smith_info(SmithEffectType::IM_ACID, _("酸免疫", "acid immunity"), SmithCategoryType::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_ACID }, 200, { TR_IM_ACID }),
+    make_basic_smith_info(SmithEffectType::IM_ELEC, _("電撃免疫", "electric immunity"), SmithCategoryType::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_ELEC }, 200, { TR_IM_ELEC }),
+    make_basic_smith_info(SmithEffectType::IM_FIRE, _("火炎免疫", "fire immunity"), SmithCategoryType::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_FIRE }, 200, { TR_IM_FIRE }),
+    make_basic_smith_info(SmithEffectType::IM_COLD, _("冷気免疫", "cold immunity"), SmithCategoryType::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_COLD }, 200, { TR_IM_COLD }),
+    make_basic_smith_info(SmithEffectType::REFLECT, _("反射", "reflection"), SmithCategoryType::RESISTANCE, { SmithEssence::REFLECT }, 20, { TR_REFLECT }),
+
+    make_basic_smith_info(SmithEffectType::RES_ACID, _("耐酸", "resistance to acid"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_ACID }, 15, { TR_RES_ACID }),
+    make_basic_smith_info(SmithEffectType::RES_ELEC, _("耐電撃", "resistance to electric"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_ELEC }, 15, { TR_RES_ELEC }),
+    make_basic_smith_info(SmithEffectType::RES_FIRE, _("耐火炎", "resistance to fire"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_FIRE }, 15, { TR_RES_FIRE }),
+    make_basic_smith_info(SmithEffectType::RES_COLD, _("耐冷気", "resistance to cold"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_COLD }, 15, { TR_RES_COLD }),
+    make_basic_smith_info(SmithEffectType::RES_POIS, _("耐毒", "resistance to poison"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_POIS }, 25, { TR_RES_POIS }),
+    make_basic_smith_info(SmithEffectType::RES_FEAR, _("耐恐怖", "resistance to fear"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_FEAR }, 20, { TR_RES_FEAR }),
+    make_basic_smith_info(SmithEffectType::RES_LITE, _("耐閃光", "resistance to light"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_LITE }, 20, { TR_RES_LITE }),
+    make_basic_smith_info(SmithEffectType::RES_DARK, _("耐暗黒", "resistance to dark"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_DARK }, 20, { TR_RES_DARK }),
+    make_basic_smith_info(SmithEffectType::RES_BLIND, _("耐盲目", "resistance to blind"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_BLIND }, 20, { TR_RES_BLIND }),
+    make_basic_smith_info(SmithEffectType::RES_CONF, _("耐混乱", "resistance to confusion"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_CONF }, 20, { TR_RES_CONF }),
+    make_basic_smith_info(SmithEffectType::RES_SOUND, _("耐轟音", "resistance to sound"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_SOUND }, 20, { TR_RES_SOUND }),
+    make_basic_smith_info(SmithEffectType::RES_SHARDS, _("耐破片", "resistance to shard"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_SHARDS }, 20, { TR_RES_SHARDS }),
+    make_basic_smith_info(SmithEffectType::RES_NETHER, _("耐地獄", "resistance to nether"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_NETHER }, 20, { TR_RES_NETHER }),
+    make_basic_smith_info(SmithEffectType::RES_NEXUS, _("耐因果混乱", "resistance to nexus"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_NEXUS }, 20, { TR_RES_NEXUS }),
+    make_basic_smith_info(SmithEffectType::RES_CHAOS, _("耐カオス", "resistance to chaos"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_CHAOS }, 20, { TR_RES_CHAOS }),
+    make_basic_smith_info(SmithEffectType::RES_DISEN, _("耐劣化", "resistance to disenchantment"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_DISEN }, 20, { TR_RES_DISEN }),
+    make_basic_smith_info(SmithEffectType::RES_WATER, _("耐水", "resistance to water"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_WATER }, 20, { TR_RES_WATER }),
+    make_basic_smith_info(SmithEffectType::RES_TIME, _("耐時間逆転", "resistance to time"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_TIME }, 20, { TR_RES_TIME }),
+    make_basic_smith_info(SmithEffectType::RES_CURSE, _("耐呪力", "resistance to curse"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_CURSE }, 20, { TR_RES_CURSE }),
+
+    make_basic_smith_info(SmithEffectType::HOLD_EXP, _("経験値維持", "hold experience"), SmithCategoryType::ABILITY, { SmithEssence::HOLD_EXP }, 20, { TR_HOLD_EXP }),
+    make_basic_smith_info(SmithEffectType::FREE_ACT, _("麻痺知らず", "free action"), SmithCategoryType::ABILITY, { SmithEssence::FREE_ACT }, 20, { TR_FREE_ACT }),
+    make_basic_smith_info(SmithEffectType::WARNING, _("警告", "warning"), SmithCategoryType::ABILITY, { SmithEssence::WARNING }, 20, { TR_WARNING }),
+    make_basic_smith_info(SmithEffectType::LEVITATION, _("浮遊", "levitation"), SmithCategoryType::ABILITY, { SmithEssence::LEVITATION }, 20, { TR_LEVITATION }),
+    make_basic_smith_info(SmithEffectType::SEE_INVIS, _("可視透明", "see invisible"), SmithCategoryType::ABILITY, { SmithEssence::SEE_INVIS }, 20, { TR_SEE_INVIS }),
+    make_basic_smith_info(SmithEffectType::SLOW_DIGEST, _("遅消化", "slow digestion"), SmithCategoryType::ABILITY, { SmithEssence::SLOW_DIGEST }, 15, { TR_SLOW_DIGEST }),
+    make_basic_smith_info(SmithEffectType::REGEN, _("急速回復", "regeneration"), SmithCategoryType::ABILITY, { SmithEssence::REGEN }, 20, { TR_REGEN }),
+    make_basic_smith_info(SmithEffectType::TELEPORT, _("テレポート", "teleport"), SmithCategoryType::ABILITY, { SmithEssence::TELEPORT }, 25, { TR_TELEPORT }),
+    make_basic_smith_info(SmithEffectType::NO_MAGIC, _("反魔法", "anti magic"), SmithCategoryType::ABILITY, { SmithEssence::NO_MAGIC }, 15, { TR_NO_MAGIC }),
+    make_basic_smith_info(SmithEffectType::LITE, _("永久光源", "permanent light"), SmithCategoryType::ABILITY, { SmithEssence::LITE }, 15, { TR_LITE_1 }),
+    make_basic_smith_info(SmithEffectType::NO_TELE, _("反テレポート", "prevent teleportation"), SmithCategoryType::ABILITY, { SmithEssence::NO_TELE }, 15, { TR_NO_TELE }),
+
+    make_basic_smith_info(SmithEffectType::SLAY_EVIL, _("邪悪倍打", "slay evil"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_EVIL }, 100, { TR_SLAY_EVIL }),
+    make_basic_smith_info(SmithEffectType::SLAY_ANIMAL, _("動物倍打", "slay animal"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_ANIMAL }, 20, { TR_SLAY_ANIMAL }),
+    make_basic_smith_info(SmithEffectType::SLAY_UNDEAD, _("不死倍打", "slay undead"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_UNDEAD }, 20, { TR_SLAY_UNDEAD }),
+    make_basic_smith_info(SmithEffectType::SLAY_DEMON, _("悪魔倍打", "slay demon"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_DEMON }, 20, { TR_SLAY_DEMON }),
+    make_basic_smith_info(SmithEffectType::SLAY_ORC, _("オーク倍打", "slay orc"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_ORC }, 20, { TR_SLAY_ORC }),
+    make_basic_smith_info(SmithEffectType::SLAY_TROLL, _("トロル倍打", "slay troll"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_TROLL }, 20, { TR_SLAY_TROLL }),
+    make_basic_smith_info(SmithEffectType::SLAY_GIANT, _("巨人倍打", "slay giant"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_GIANT }, 20, { TR_SLAY_GIANT }),
+    make_basic_smith_info(SmithEffectType::SLAY_DRAGON, _("竜倍打", "slay dragon"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_DRAGON }, 20, { TR_SLAY_DRAGON }),
+    make_basic_smith_info(SmithEffectType::SLAY_HUMAN, _("人間倍打", "slay human"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_HUMAN }, 20, { TR_SLAY_HUMAN }),
+    make_basic_smith_info(SmithEffectType::SLAY_GOOD, _("善良倍打", "slay good"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_GOOD }, 20, { TR_SLAY_GOOD }),
+
+    make_basic_smith_info(SmithEffectType::KILL_EVIL, _("邪悪倍倍打", "kill evil"), SmithCategoryType::NONE, { SmithEssence::SLAY_EVIL }, 0, { TR_KILL_EVIL }), // 強力すぎるため無効(SmithCategory:NONE)
+    make_basic_smith_info(SmithEffectType::KILL_ANIMAL, _("動物倍倍打", "kill animal"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_ANIMAL }, 60, { TR_KILL_ANIMAL }),
+    make_basic_smith_info(SmithEffectType::KILL_UNDEAD, _("不死倍倍打", "kill undead"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_UNDEAD }, 60, { TR_KILL_UNDEAD }),
+    make_basic_smith_info(SmithEffectType::KILL_DEMON, _("悪魔倍倍打", "kill demon"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_DEMON }, 60, { TR_KILL_DEMON }),
+    make_basic_smith_info(SmithEffectType::KILL_ORC, _("オーク倍倍打", "kill orc"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_ORC }, 60, { TR_KILL_ORC }),
+    make_basic_smith_info(SmithEffectType::KILL_TROLL, _("トロル倍倍打", "kill troll"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_TROLL }, 60, { TR_KILL_TROLL }),
+    make_basic_smith_info(SmithEffectType::KILL_GIANT, _("巨人倍倍打", "kill giant"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_GIANT }, 60, { TR_KILL_GIANT }),
+    make_basic_smith_info(SmithEffectType::KILL_DRAGON, _("竜倍倍打", "kill dragon"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_DRAGON }, 60, { TR_KILL_DRAGON }),
+    make_basic_smith_info(SmithEffectType::KILL_HUMAN, _("人間倍倍打", "kill human"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_HUMAN }, 60, { TR_KILL_HUMAN }),
+    make_basic_smith_info(SmithEffectType::KILL_GOOD, _("善良倍倍打", "kill good"), SmithCategoryType::SLAYING, { SmithEssence::SLAY_GOOD }, 60, { TR_KILL_GOOD }),
+
+    make_basic_smith_info(SmithEffectType::TELEPATHY, _("テレパシー", "telepathy"), SmithCategoryType::ESP, { SmithEssence::TELEPATHY }, 15, { TR_TELEPATHY }),
+    make_basic_smith_info(SmithEffectType::ESP_ANIMAL, _("動物ESP", "sense animal"), SmithCategoryType::ESP, { SmithEssence::SLAY_ANIMAL }, 40, { TR_ESP_ANIMAL }),
+    make_basic_smith_info(SmithEffectType::ESP_UNDEAD, _("不死ESP", "sense undead"), SmithCategoryType::ESP, { SmithEssence::SLAY_UNDEAD }, 40, { TR_ESP_UNDEAD }),
+    make_basic_smith_info(SmithEffectType::ESP_DEMON, _("悪魔ESP", "sense demon"), SmithCategoryType::ESP, { SmithEssence::SLAY_DEMON }, 40, { TR_ESP_DEMON }),
+    make_basic_smith_info(SmithEffectType::ESP_ORC, _("オークESP", "sense orc"), SmithCategoryType::ESP, { SmithEssence::SLAY_ORC }, 40, { TR_ESP_ORC }),
+    make_basic_smith_info(SmithEffectType::ESP_TROLL, _("トロルESP", "sense troll"), SmithCategoryType::ESP, { SmithEssence::SLAY_TROLL }, 40, { TR_ESP_TROLL }),
+    make_basic_smith_info(SmithEffectType::ESP_GIANT, _("巨人ESP", "sense giant"), SmithCategoryType::ESP, { SmithEssence::SLAY_GIANT }, 40, { TR_ESP_GIANT }),
+    make_basic_smith_info(SmithEffectType::ESP_DRAGON, _("竜ESP", "sense dragon"), SmithCategoryType::ESP, { SmithEssence::SLAY_DRAGON }, 40, { TR_ESP_DRAGON }),
+    make_basic_smith_info(SmithEffectType::ESP_HUMAN, _("人間ESP", "sense human"), SmithCategoryType::ESP, { SmithEssence::SLAY_HUMAN }, 40, { TR_ESP_HUMAN }),
+    make_basic_smith_info(SmithEffectType::ESP_GOOD, _("善良ESP", "sense good"), SmithCategoryType::ESP, { SmithEssence::SLAY_GOOD }, 40, { TR_ESP_GOOD }),
+    make_basic_smith_info(SmithEffectType::ESP_UNIQUE, _("ユニークESP", "sense unique"), SmithCategoryType::ESP, { SmithEssence::UNIQUE }, 100, { TR_ESP_UNIQUE }),
+
+    make_basic_smith_info(SmithEffectType::SH_FIRE, _("火炎オーラ", "fiery sheath"), SmithCategoryType::ETC, { SmithEssence::RES_FIRE, SmithEssence::BRAND_FIRE }, 50, { TR_RES_FIRE, TR_SH_FIRE }),
+    make_basic_smith_info(SmithEffectType::SH_ELEC, _("電撃オーラ", "electric sheath"), SmithCategoryType::ETC, { SmithEssence::RES_ELEC, SmithEssence::BRAND_ELEC }, 50, { TR_RES_ELEC, TR_SH_ELEC }),
+    make_basic_smith_info(SmithEffectType::SH_COLD, _("冷気オーラ", "sheath of coldness"), SmithCategoryType::ETC, { SmithEssence::RES_COLD, SmithEssence::BRAND_COLD }, 50, { TR_RES_COLD, TR_SH_COLD }),
+
+    make_basic_smith_info(SmithEffectType::RESISTANCE, _("全耐性", "resistance"), SmithCategoryType::RESISTANCE, { SmithEssence::RES_ACID, SmithEssence::RES_ELEC, SmithEssence::RES_FIRE, SmithEssence::RES_COLD }, 150, { TR_RES_ACID, TR_RES_ELEC, TR_RES_FIRE, TR_RES_COLD }),
+    make_info<SlayingGlovesSmithInfo>(SmithEffectType::SLAY_GLOVE, _("殺戮の小手", "gauntlets of slaying"), SmithCategoryType::ETC, { SmithEssence::ATTACK }, 200),
+    make_basic_smith_info(SmithEffectType::EASY_2WEAPON, _("源氏の小手", "guantlets of Genji"), SmithCategoryType::ETC, { SmithEssence::EASY2_WEAPON }, 20, { TR_EASY2_WEAPON }),
+
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_QUAKE, _("地震", "quake"), SmithCategoryType::ACTIVATION, { SmithEssence::EATHQUAKE }, 15, RandomArtActType::QUAKE),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_ACID, _("酸耐性", "resist acid"), SmithCategoryType::ACTIVATION, { SmithEssence::RES_ACID }, 30, RandomArtActType::RESIST_ACID),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_ELEC, _("電撃耐性", "resist electricity"), SmithCategoryType::ACTIVATION, { SmithEssence::RES_ELEC }, 30, RandomArtActType::RESIST_ELEC),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_FIRE, _("火炎耐性", "resist fire"), SmithCategoryType::ACTIVATION, { SmithEssence::RES_FIRE }, 30, RandomArtActType::RESIST_FIRE),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_COLD, _("冷気耐性", "resist cold"), SmithCategoryType::ACTIVATION, { SmithEssence::RES_COLD }, 30, RandomArtActType::RESIST_COLD),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_RES_POIS, _("毒耐性", "resist poison"), SmithCategoryType::ACTIVATION, { SmithEssence::RES_POIS }, 40, RandomArtActType::RESIST_POIS),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_PHASE_DOOR, _("ショート・テレポート", "blink"), SmithCategoryType::ACTIVATION, { SmithEssence::TELEPORT }, 30, RandomArtActType::PHASE_DOOR),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_TELEPORT, _("テレポート", "teleport"), SmithCategoryType::ACTIVATION, { SmithEssence::TELEPORT }, 40, RandomArtActType::TELEPORT),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_SPEED, _("スピード", "speed"), SmithCategoryType::ACTIVATION, { SmithEssence::SPEED }, 25, RandomArtActType::SPEED),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_STONE_MUD, _("岩石溶解", "stone to mud"), SmithCategoryType::ACTIVATION, { SmithEssence::TUNNEL }, 100, RandomArtActType::STONE_MUD),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_LIGHT, _("イルミネーション", "light area"), SmithCategoryType::ACTIVATION, { SmithEssence::LITE }, 30, RandomArtActType::LIGHT),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_MAP_LIGHT, _("魔法の地図と光", "light & map area"), SmithCategoryType::ACTIVATION, { SmithEssence::SEARCH, SmithEssence::LITE }, 30, RandomArtActType::MAP_LIGHT),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DETECT_ALL, _("全感知", "detection"), SmithCategoryType::ACTIVATION, { SmithEssence::SEARCH, SmithEssence::TELEPATHY }, 30, RandomArtActType::DETECT_ALL),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DETECT_UNIQUE, _("階にいるユニークモンスターを表示", "list of the uniques on the level"), SmithCategoryType::ACTIVATION, { SmithEssence::UNIQUE }, 100, RandomArtActType::DETECT_UNIQUE),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_REST_EXP, _("経験値復活", "restore experience"), SmithCategoryType::ACTIVATION, { SmithEssence::HOLD_EXP }, 30, RandomArtActType::REST_EXP),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_REST_ALL, _("全ステータスと経験値復活", "restore stats and experience"), SmithCategoryType::ACTIVATION, { SmithEssence::SUST_STATUS, SmithEssence::HOLD_EXP }, 40, RandomArtActType::REST_ALL),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_PROT_EVIL, _("対邪悪結界", "protect evil"), SmithCategoryType::ACTIVATION, { SmithEssence::SLAY_EVIL }, 100, RandomArtActType::PROT_EVIL),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DISP_EVIL, _("邪悪退散", "dispel evil"), SmithCategoryType::ACTIVATION, { SmithEssence::SLAY_EVIL }, 100, RandomArtActType::DISP_EVIL),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DISP_GOOD, _("善良退散", "dispel good"), SmithCategoryType::ACTIVATION, { SmithEssence::SLAY_GOOD }, 50, RandomArtActType::DISP_GOOD),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_PESTICIDE, _("害虫駆除", "dispel pests"), SmithCategoryType::ACTIVATION, { SmithEssence::BRAND_POIS }, 30, RandomArtActType::PESTICIDE),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_ACID, _("アシッド・ボール", "ball of acid"), SmithCategoryType::ACTIVATION, { SmithEssence::BRAND_ACID }, 40, RandomArtActType::BA_ACID_1),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_ELEC, _("サンダー・ボール", "ball of lightning"), SmithCategoryType::ACTIVATION, { SmithEssence::BRAND_ELEC }, 40, RandomArtActType::BA_ELEC_2),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_FIRE, _("ファイア・ボール", "ball of fire"), SmithCategoryType::ACTIVATION, { SmithEssence::BRAND_FIRE }, 40, RandomArtActType::BA_FIRE_4),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_COLD, _("アイス・ボール", "ball of cold"), SmithCategoryType::ACTIVATION, { SmithEssence::BRAND_COLD }, 40, RandomArtActType::BA_COLD_2),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_BA_NUKE, _("放射能球", "ball of nuke"), SmithCategoryType::ACTIVATION, { SmithEssence::BRAND_POIS, SmithEssence::CHAOTIC }, 30, RandomArtActType::BA_NUKE_1),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_SUNLIGHT, _("太陽光線", "beam of sunlight"), SmithCategoryType::ACTIVATION, { SmithEssence::LITE }, 40, RandomArtActType::SUNLIGHT),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_DRAIN, _("吸血の矢", "drain bolt"), SmithCategoryType::ACTIVATION, { SmithEssence::VAMPIRIC }, 100, RandomArtActType::DRAIN_1),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_CONFUSE, _("パニック・モンスター", "confuse monster"), SmithCategoryType::ACTIVATION, { SmithEssence::CHAOTIC }, 30, RandomArtActType::CONFUSE),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_SATIATE, _("空腹充足", "satisfy hunger"), SmithCategoryType::ACTIVATION, { SmithEssence::SLOW_DIGEST }, 50, RandomArtActType::SATIATE),
+    make_info<ActivationSmithInfo>(SmithEffectType::ACT_CURE_700, _("体力回復", "heal"), SmithCategoryType::ACTIVATION, { SmithEssence::REGEN }, 100, RandomArtActType::CURE_700),
+
+    make_info<EnchantWeaponSmithInfo>(SmithEffectType::ATTACK, _("攻撃", "weapon enchant"), SmithCategoryType::ENCHANT, { SmithEssence::ATTACK }, 30),
+    make_info<EnchantArmourSmithInfo>(SmithEffectType::AC, _("防御", "armor enchant"), SmithCategoryType::ENCHANT, { SmithEssence::AC }, 15),
+    make_info<SustainSmithInfo>(SmithEffectType::SUSTAIN, _("装備保持", "elements proof"), SmithCategoryType::ENCHANT, { SmithEssence::RES_ACID, SmithEssence::RES_ELEC, SmithEssence::RES_FIRE, SmithEssence::RES_COLD }, 10),
 };
index 0320b1f..b0f53a9 100644 (file)
@@ -165,7 +165,7 @@ enum class SmithEffectType : int16_t {
 /**
  * @brief アイテムに付与できる鍛冶効果のカテゴリ
  */
-enum class SmithCategory {
+enum class SmithCategoryType {
     NONE = 0,
     WEAPON_ATTR = 1, //!< 武器属性
     RESISTANCE = 2, //!< 耐性