OSDN Git Service

[Feature] 鍛冶効果:二刀流
authorHabu <habu1010+github@gmail.com>
Mon, 13 Sep 2021 09:19:32 +0000 (18:19 +0900)
committerHabu <habu1010+github@gmail.com>
Mon, 13 Sep 2021 12:21:50 +0000 (21:21 +0900)
二刀流のエッセンスと源氏の小手の鍛冶効果を追加する。
抽出量:10
付与必要数:20
TR_SUPPORTIVE にも一応抽出量 5 を設定しておいたが、現状ベースアイテムに
元々ついている固定アーティファクトしか無いため、実際は抽出できない。

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

index c1b2255..5c2efb7 100644 (file)
@@ -70,6 +70,9 @@ bool BasicSmithInfo::can_give_smith_effect_impl(const object_type *o_ptr) const
     if (this->effect == SmithEffect::VORPAL) {
         return (o_ptr->tval == TV_SWORD) && (o_ptr->sval != SV_POISON_NEEDLE);
     }
+    if (this->effect == SmithEffect::EASY_2WEAPON) {
+        return (o_ptr->tval == TV_GLOVES);
+    }
     if (this->category == SmithCategory::WEAPON_ATTR || this->category == SmithCategory::SLAYING) {
         return o_ptr->is_melee_ammo();
     }
index 197e027..597fbfd 100644 (file)
@@ -87,6 +87,8 @@ const std::vector<SmithEssence> Smith::essence_list_order = {
     SmithEssence::SLAY_HUMAN,
     SmithEssence::SLAY_GOOD,
 
+    SmithEssence::EASY2_WEAPON,
+
     SmithEssence::ATTACK,
     SmithEssence::AC,
 };
@@ -168,6 +170,8 @@ const std::unordered_map<SmithEssence, concptr> Smith::essence_to_name = {
     { SmithEssence::SLAY_HUMAN, _("人間倍打", "slay human") },
     { SmithEssence::SLAY_GOOD, _("善良倍打", "slay good") },
 
+    { SmithEssence::EASY2_WEAPON, _("二刀流", "two weapons") },
+
     { SmithEssence::ATTACK, _("攻撃", "weapon enc.") },
     { SmithEssence::AC, _("防御", "armor enc.") },
 };
@@ -319,7 +323,7 @@ const std::vector<essence_drain_type> Smith::essence_drain_info_table = {
     { TR_FAST_DIGEST, {}, -1 },
     { TR_SLOW_REGEN, {}, -1 },
     { TR_MIGHTY_THROW, {}, 0 },
-    { TR_EASY2_WEAPON, { SmithEssence::DEX }, 20 },
+    { TR_EASY2_WEAPON, { SmithEssence::EASY2_WEAPON }, 10 },
     { TR_DOWN_SAVING, {}, -1 },
     { TR_NO_AC, {}, -1 },
     { TR_HEAVY_SPELL, {}, -1 },
@@ -327,7 +331,7 @@ const std::vector<essence_drain_type> Smith::essence_drain_info_table = {
     { TR_RES_WATER, { SmithEssence::RES_WATER }, 10 },
     { TR_INVULN_ARROW, {}, 0 },
     { TR_DARK_SOURCE, {}, 0 },
-    { TR_SUPPORTIVE, {}, 0 },
+    { TR_SUPPORTIVE, { SmithEssence::EASY2_WEAPON }, 5 },
     { TR_RES_CURSE, { SmithEssence::RES_CURSE }, 10 },
     { TR_BERS_RAGE, {}, -1 },
     { TR_BRAND_MAGIC, {}, 0 },
@@ -474,6 +478,7 @@ const std::vector<std::shared_ptr<ISmithInfo>> Smith::smith_info_table = {
 
     make_basic_smith_info(SmithEffect::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>(SmithEffect::SLAY_GLOVE, _("殺戮の小手", "gauntlets of slaying"), SmithCategory::WEAPON_ATTR, { SmithEssence::ATTACK }, 200),
+    make_basic_smith_info(SmithEffect::EASY_2WEAPON, _("源氏の小手", "guantlets of Genji"), SmithCategory::WEAPON_ATTR, { SmithEssence::EASY2_WEAPON }, 20, { TR_EASY2_WEAPON }),
 
     make_info<EnchantWeaponSmithInfo>(SmithEffect::ATTACK, _("攻撃", "weapon enchant"), SmithCategory::ENCHANT, { SmithEssence::ATTACK }, 30),
     make_info<EnchantArmourSmithInfo>(SmithEffect::AC, _("防御", "armor enchant"), SmithCategory::ENCHANT, { SmithEssence::AC }, 15),
index 8dc7f67..5e5be46 100644 (file)
@@ -76,6 +76,7 @@ enum class SmithEffect {
     NO_MAGIC = 108, //!< 反魔法
     LITE = 109, //!< 永久光源
     NO_TELE = 110, //!< テレポート
+    EASY_2WEAPON = 111, //!< 二刀流
 
     SLAY_EVIL = 120, //!< 邪悪倍打
     SLAY_ANIMAL = 121, //!< 動物倍打
@@ -215,6 +216,7 @@ enum class SmithEssence {
     RES_TIME = 63, //!< 耐時間逆転
     RES_CURSE = 64, //!< 耐呪力
     NO_TELE = 65, //!< 反テレポート
+    EASY2_WEAPON = 66, //!< 二刀流
 
     ATTACK = 100, //!< 攻撃
     AC = 101, //!< 防御