OSDN Git Service

[Feature] 鍛冶効果:射撃倍率強化/追加射撃
authorHabu <habu1010+github@gmail.com>
Mon, 13 Sep 2021 11:49:47 +0000 (20:49 +0900)
committerHabu <habu1010+github@gmail.com>
Mon, 13 Sep 2021 12:21:50 +0000 (21:21 +0900)
遠隔武器の倍率強化を付与する鍛冶効果と追加射撃を付与する鍛冶効果を
追加。エッセンスは共通で
抽出量:10
付与必要数:50
{倍射}が作りやすくなるのでエッセンス消費量などの調整の余地あり。

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

index 5c2efb7..385697b 100644 (file)
@@ -67,6 +67,9 @@ bool BasicSmithInfo::can_give_smith_effect(const object_type *o_ptr) const
 
 bool BasicSmithInfo::can_give_smith_effect_impl(const object_type *o_ptr) const
 {
+    if (this->effect == SmithEffect::XTRA_MIGHT || this->effect == SmithEffect::XTRA_SHOTS) {
+        return o_ptr->tval == TV_BOW;
+    }
     if (this->effect == SmithEffect::VORPAL) {
         return (o_ptr->tval == TV_SWORD) && (o_ptr->sval != SV_POISON_NEEDLE);
     }
index 597fbfd..f4a204d 100644 (file)
@@ -88,6 +88,7 @@ const std::vector<SmithEssence> Smith::essence_list_order = {
     SmithEssence::SLAY_GOOD,
 
     SmithEssence::EASY2_WEAPON,
+    SmithEssence::STRENGTHEN_BOW,
 
     SmithEssence::ATTACK,
     SmithEssence::AC,
@@ -171,6 +172,7 @@ const std::unordered_map<SmithEssence, concptr> Smith::essence_to_name = {
     { SmithEssence::SLAY_GOOD, _("善良倍打", "slay good") },
 
     { SmithEssence::EASY2_WEAPON, _("二刀流", "two weapons") },
+    { SmithEssence::STRENGTHEN_BOW, _("射撃強化", "enc. ranged") },
 
     { SmithEssence::ATTACK, _("攻撃", "weapon enc.") },
     { SmithEssence::AC, _("防御", "armor enc.") },
@@ -264,8 +266,8 @@ const std::vector<essence_drain_type> Smith::essence_drain_info_table = {
     { TR_TELEPATHY, { SmithEssence::TELEPATHY }, 10 },
     { TR_SLOW_DIGEST, { SmithEssence::SLOW_DIGEST }, 10 },
     { TR_REGEN, { SmithEssence::REGEN }, 10 },
-    { TR_XTRA_MIGHT, { SmithEssence::STR }, 10 },
-    { TR_XTRA_SHOTS, { SmithEssence::DEX }, 10 },
+    { TR_XTRA_MIGHT, { SmithEssence::STRENGTHEN_BOW }, 10 },
+    { TR_XTRA_SHOTS, { SmithEssence::STRENGTHEN_BOW }, 10 },
     { TR_IGNORE_ACID, {}, 0 },
     { TR_IGNORE_ELEC, {}, 0 },
     { TR_IGNORE_FIRE, {}, 0 },
@@ -395,6 +397,8 @@ const std::vector<std::shared_ptr<ISmithInfo>> Smith::smith_info_table = {
     make_basic_smith_info(SmithEffect::BRAND_FIRE, _("焼棄", "fire brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_FIRE }, 20, { TR_BRAND_FIRE }),
     make_basic_smith_info(SmithEffect::BRAND_COLD, _("凍結", "cold brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_COLD }, 20, { TR_BRAND_COLD }),
     make_basic_smith_info(SmithEffect::VORPAL, _("切れ味", "sharpness"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_ACID, SmithEssence::BRAND_ELEC, SmithEssence::BRAND_FIRE, SmithEssence::BRAND_COLD }, 10, { TR_VORPAL }),
+    make_basic_smith_info(SmithEffect::XTRA_MIGHT, _("射撃倍率強化", "enhance firing power"), SmithCategory::WEAPON_ATTR, { SmithEssence::STRENGTHEN_BOW }, 50, { TR_XTRA_MIGHT }),
+    make_basic_smith_info(SmithEffect::XTRA_SHOTS, _("射撃速度強化", "enhance firing rate"), SmithCategory::WEAPON_ATTR, { SmithEssence::STRENGTHEN_BOW }, 50, { TR_XTRA_SHOTS }),
 
     make_basic_smith_info(SmithEffect::IM_ACID, _("酸免疫", "acid immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_ACID }, 200, { TR_IM_ACID }),
     make_basic_smith_info(SmithEffect::IM_ELEC, _("電撃免疫", "electric immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY, SmithEssence::RES_ELEC }, 200, { TR_IM_ELEC }),
index 5e5be46..049ef24 100644 (file)
@@ -38,6 +38,8 @@ enum class SmithEffect {
     BRAND_FIRE = 46, //!< 焼棄
     BRAND_COLD = 47, //!< 凍結
     VORPAL = 48, //!< 切れ味
+    XTRA_MIGHT = 49, //!< 強力射
+    XTRA_SHOTS = 50, //!< 強速射
 
     IM_ACID = 60, //!< 酸免疫
     IM_ELEC = 61, //!< 電撃免疫
@@ -217,6 +219,7 @@ enum class SmithEssence {
     RES_CURSE = 64, //!< 耐呪力
     NO_TELE = 65, //!< 反テレポート
     EASY2_WEAPON = 66, //!< 二刀流
+    STRENGTHEN_BOW = 67, //!< 弓強化
 
     ATTACK = 100, //!< 攻撃
     AC = 101, //!< 防御