From 8374ba414d98f7c0819539e7ff449e7f5967eba3 Mon Sep 17 00:00:00 2001 From: Habu Date: Sun, 12 Sep 2021 21:37:23 +0900 Subject: [PATCH] =?utf8?q?[Feature]=20=E9=8D=9B=E5=86=B6=E5=8A=B9=E6=9E=9C?= =?utf8?q?=EF=BC=9A=E5=88=87=E3=82=8C=E5=91=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 武器属性の切れ味を付与する鍛冶を実装する。 使用エッセンスは溶解・電撃・焼棄・凍結を10ずつ。 付与できる武器は刀剣類のみに限定。 --- src/object-enchant/smith-info.cpp | 4 ++++ src/object-enchant/smith-tables.cpp | 1 + src/object-enchant/smith-types.h | 1 + 3 files changed, 6 insertions(+) diff --git a/src/object-enchant/smith-info.cpp b/src/object-enchant/smith-info.cpp index 2f09d1d6e..c1b225587 100644 --- a/src/object-enchant/smith-info.cpp +++ b/src/object-enchant/smith-info.cpp @@ -2,6 +2,7 @@ #include "object-enchant/smith-types.h" #include "object-enchant/tr-types.h" #include "object/object-flags.h" +#include "sv-definition/sv-weapon-types.h" #include "system/object-type-definition.h" #include "system/player-type-definition.h" @@ -66,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::VORPAL) { + return (o_ptr->tval == TV_SWORD) && (o_ptr->sval != SV_POISON_NEEDLE); + } if (this->category == SmithCategory::WEAPON_ATTR || this->category == SmithCategory::SLAYING) { return o_ptr->is_melee_ammo(); } diff --git a/src/object-enchant/smith-tables.cpp b/src/object-enchant/smith-tables.cpp index 28284dd86..15c8a945a 100644 --- a/src/object-enchant/smith-tables.cpp +++ b/src/object-enchant/smith-tables.cpp @@ -388,6 +388,7 @@ const std::vector> Smith::smith_info_table = { make_basic_smith_info(SmithEffect::BRAND_ELEC, _("電撃", "electric brand"), SmithCategory::WEAPON_ATTR, { SmithEssence::BRAND_ELEC }, 20, { TR_BRAND_ELEC }), 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::IM_ACID, _("酸免疫", "acid immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY }, 20, { TR_IM_ACID }), make_basic_smith_info(SmithEffect::IM_ELEC, _("電撃免疫", "electric immunity"), SmithCategory::RESISTANCE, { SmithEssence::IMMUNITY }, 20, { TR_IM_ELEC }), diff --git a/src/object-enchant/smith-types.h b/src/object-enchant/smith-types.h index 2f8ab0048..989933172 100644 --- a/src/object-enchant/smith-types.h +++ b/src/object-enchant/smith-types.h @@ -37,6 +37,7 @@ enum class SmithEffect { BRAND_ELEC = 45, //!< 電撃 BRAND_FIRE = 46, //!< 焼棄 BRAND_COLD = 47, //!< 凍結 + VORPAL = 48, //!< 切れ味 IM_ACID = 60, //!< 酸免疫 IM_ELEC = 61, //!< 電撃免疫 -- 2.11.0