strcpy(name_str, e_ptr->name.c_str());
#endif
name = false;
- if (!object_is_rare(o_ptr))
+ if (!o_ptr->is_rare())
ADD_FLG(FLG_COMMON);
}
}
}
- if (IS_FLG(FLG_RARE) && !object_is_rare(o_ptr))
+ if (IS_FLG(FLG_RARE) && !o_ptr->is_rare())
return false;
- if (IS_FLG(FLG_COMMON) && object_is_rare(o_ptr))
+ if (IS_FLG(FLG_COMMON) && o_ptr->is_rare())
return false;
if (IS_FLG(FLG_WANTED) && !object_is_bounty(player_ptr, o_ptr))
#include "system/player-type-definition.h"
/*!
- * @brief オブジェクトがレアアイテムかどうかを返す /
- * Rare weapons/aromors including Blade of Chaos, Dragon armors, etc.
- * @param o_ptr 対象のオブジェクト構造体ポインタ
- * @return レアアイテムならばTRUEを返す
- */
-bool object_is_rare(const object_type *o_ptr)
-{
- switch (o_ptr->tval) {
- case TV_HAFTED:
- if (o_ptr->sval == SV_MACE_OF_DISRUPTION || o_ptr->sval == SV_WIZSTAFF)
- return true;
- break;
-
- case TV_POLEARM:
- if (o_ptr->sval == SV_SCYTHE_OF_SLICING || o_ptr->sval == SV_DEATH_SCYTHE)
- return true;
- break;
-
- case TV_SWORD:
- if (o_ptr->sval == SV_BLADE_OF_CHAOS || o_ptr->sval == SV_DIAMOND_EDGE || o_ptr->sval == SV_POISON_NEEDLE || o_ptr->sval == SV_HAYABUSA)
- return true;
- break;
-
- case TV_SHIELD:
- if (o_ptr->sval == SV_DRAGON_SHIELD || o_ptr->sval == SV_MIRROR_SHIELD)
- return true;
- break;
-
- case TV_HELM:
- if (o_ptr->sval == SV_DRAGON_HELM)
- return true;
- break;
-
- case TV_BOOTS:
- if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE)
- return true;
- break;
-
- case TV_CLOAK:
- if (o_ptr->sval == SV_ELVEN_CLOAK || o_ptr->sval == SV_ETHEREAL_CLOAK || o_ptr->sval == SV_SHADOW_CLOAK || o_ptr->sval == SV_MAGIC_RESISTANCE_CLOAK)
- return true;
- break;
-
- case TV_GLOVES:
- if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES)
- return true;
- break;
-
- case TV_SOFT_ARMOR:
- if (o_ptr->sval == SV_KUROSHOUZOKU || o_ptr->sval == SV_ABUNAI_MIZUGI)
- return true;
- break;
-
- case TV_HARD_ARMOR:
- if (o_ptr->sval == SV_MITHRIL_CHAIN_MAIL || o_ptr->sval == SV_MITHRIL_PLATE_MAIL || o_ptr->sval == SV_ADAMANTITE_PLATE_MAIL)
- return true;
- break;
-
- case TV_DRAG_ARMOR:
- return true;
-
- default:
- break;
- }
-
- /* Any others are not "rare" objects. */
- return false;
-}
-
-/*!
* @brief オブジェクトがアーティファクトかを返す /
* Check if an object is artifact
* @param o_ptr 対象のオブジェクト構造体ポインタ
typedef struct player_type player_type;
bool object_is_fixed_artifact(const object_type *o_ptr);
bool object_is_ego(const object_type *o_ptr);
-bool object_is_rare(const object_type *o_ptr);
bool object_is_artifact(const object_type *o_ptr);
bool object_is_random_artifact(const object_type *o_ptr);
bool object_is_nameless(const object_type *o_ptr);
#include "object-enchant/trc-types.h"
#include "object-enchant/trg-types.h"
#include "object/object-kind.h"
+#include "sv-definition/sv-armor-types.h"
#include "sv-definition/sv-other-types.h"
+#include "sv-definition/sv-protector-types.h"
#include "sv-definition/sv-weapon-types.h"
#include "system/player-type-definition.h"
{
return (TV_ARMOR_BEGIN <= this->tval) && (this->tval <= TV_ARMOR_END);
}
+
+/*!
+ * @brief オブジェクトがレアアイテムかどうかを返す /
+ * Rare weapons/aromors including Blade of Chaos, Dragon armors, etc.
+ * @return レアアイテムならばTRUEを返す
+ */
+bool object_type::is_rare() const
+{
+ switch (this->tval) {
+ case TV_HAFTED:
+ if (this->sval == SV_MACE_OF_DISRUPTION || this->sval == SV_WIZSTAFF)
+ return true;
+ break;
+
+ case TV_POLEARM:
+ if (this->sval == SV_SCYTHE_OF_SLICING || this->sval == SV_DEATH_SCYTHE)
+ return true;
+ break;
+
+ case TV_SWORD:
+ if (this->sval == SV_BLADE_OF_CHAOS || this->sval == SV_DIAMOND_EDGE || this->sval == SV_POISON_NEEDLE || this->sval == SV_HAYABUSA)
+ return true;
+ break;
+
+ case TV_SHIELD:
+ if (this->sval == SV_DRAGON_SHIELD || this->sval == SV_MIRROR_SHIELD)
+ return true;
+ break;
+
+ case TV_HELM:
+ if (this->sval == SV_DRAGON_HELM)
+ return true;
+ break;
+
+ case TV_BOOTS:
+ if (this->sval == SV_PAIR_OF_DRAGON_GREAVE)
+ return true;
+ break;
+
+ case TV_CLOAK:
+ if (this->sval == SV_ELVEN_CLOAK || this->sval == SV_ETHEREAL_CLOAK || this->sval == SV_SHADOW_CLOAK || this->sval == SV_MAGIC_RESISTANCE_CLOAK)
+ return true;
+ break;
+
+ case TV_GLOVES:
+ if (this->sval == SV_SET_OF_DRAGON_GLOVES)
+ return true;
+ break;
+
+ case TV_SOFT_ARMOR:
+ if (this->sval == SV_KUROSHOUZOKU || this->sval == SV_ABUNAI_MIZUGI)
+ return true;
+ break;
+
+ case TV_HARD_ARMOR:
+ if (this->sval == SV_MITHRIL_CHAIN_MAIL || this->sval == SV_MITHRIL_PLATE_MAIL || this->sval == SV_ADAMANTITE_PLATE_MAIL)
+ return true;
+ break;
+
+ case TV_DRAG_ARMOR:
+ return true;
+
+ default:
+ break;
+ }
+
+ /* Any others are not "rare" objects. */
+ return false;
+}
bool is_convertible() const;
bool is_lance() const;
bool is_armour() const;
+ bool is_rare() const;
} object_type;