#include "sv-definition/sv-bow-types.h"
#include "sv-definition/sv-food-types.h"
#include "sv-definition/sv-lite-types.h"
+#include "sv-definition/sv-other-types.h"
#include "sv-definition/sv-protector-types.h"
#include "sv-definition/sv-rod-types.h"
#include "sv-definition/sv-weapon-types.h"
return this->subtype_value;
}
+bool BaseitemKey::is(ItemKindType tval) const
+{
+ return this->type_value == tval;
+}
+
/*!
* @brief 射撃武器に対応する矢/弾薬のベースアイテムIDを返す
* @return 対応する矢/弾薬のベースアイテムID
return *this == BaseitemKey(ItemKindType::SWORD, SV_POISON_NEEDLE);
}
+/*!
+ * @brief ベースアイテムが発動効果を持つ時、その記述を生成する
+ * @return 発動効果
+ */
+std::string BaseitemKey::explain_activation() const
+{
+ switch (this->type_value) {
+ case ItemKindType::WHISTLE:
+ return _("ペット呼び寄せ : 100+d100ターン毎", "call pet every 100+d100 turns");
+ case ItemKindType::CAPTURE:
+ return _("モンスターを捕える、又は解放する。", "captures or releases a monster.");
+ default:
+ return _("何も起きない", "Nothing");
+ }
+}
+
+bool BaseitemKey::is_convertible() const
+{
+ auto is_convertible = this->is(ItemKindType::JUNK) || this->is(ItemKindType::SKELETON);
+ is_convertible |= *this == BaseitemKey(ItemKindType::CORPSE, SV_SKELETON);
+ return is_convertible;
+}
+
+bool BaseitemKey::is_fuel() const
+{
+ auto is_fuel = *this == BaseitemKey(ItemKindType::LITE, SV_LITE_TORCH);
+ is_fuel |= *this == BaseitemKey(ItemKindType::LITE, SV_LITE_LANTERN);
+ is_fuel |= *this == BaseitemKey(ItemKindType::FLASK, SV_FLASK_OIL);
+ return is_fuel;
+}
+
+bool BaseitemKey::is_lance() const
+{
+ auto is_lance = *this == BaseitemKey(ItemKindType::POLEARM, SV_LANCE);
+ is_lance |= *this == BaseitemKey(ItemKindType::POLEARM, SV_HEAVY_LANCE);
+ return is_lance;
+}
+
+bool BaseitemKey::is_readable() const
+{
+ auto can_read = this->is(ItemKindType::SCROLL);
+ can_read |= this->is(ItemKindType::PARCHMENT);
+ return can_read;
+}
+
+bool BaseitemKey::is_corpse() const
+{
+ return *this == BaseitemKey(ItemKindType::CORPSE, SV_CORPSE);
+}
+
bool BaseitemKey::is_mushrooms() const
{
if (!this->subtype_value) {