1 #include "object-hook/hook-enchant.h"
2 #include "mind/mind-weaponsmith.h"
3 #include "sv-definition/sv-armor-types.h"
4 #include "sv-definition/sv-protector-types.h"
5 #include "sv-definition/sv-weapon-types.h"
6 #include "system/object-type-definition.h"
9 * @brief オブジェクトがレアアイテムかどうかを返す /
10 * Rare weapons/aromors including Blade of Chaos, Dragon armors, etc.
11 * @param o_ptr 対象のオブジェクト構造体ポインタ
12 * @return レアアイテムならばTRUEを返す
14 bool object_is_rare(object_type *o_ptr)
16 switch (o_ptr->tval) {
18 if (o_ptr->sval == SV_MACE_OF_DISRUPTION || o_ptr->sval == SV_WIZSTAFF)
23 if (o_ptr->sval == SV_SCYTHE_OF_SLICING || o_ptr->sval == SV_DEATH_SCYTHE)
28 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)
33 if (o_ptr->sval == SV_DRAGON_SHIELD || o_ptr->sval == SV_MIRROR_SHIELD)
38 if (o_ptr->sval == SV_DRAGON_HELM)
43 if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE)
48 if (o_ptr->sval == SV_ELVEN_CLOAK || o_ptr->sval == SV_ETHEREAL_CLOAK || o_ptr->sval == SV_SHADOW_CLOAK)
53 if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES)
58 if (o_ptr->sval == SV_KUROSHOUZOKU || o_ptr->sval == SV_ABUNAI_MIZUGI)
69 /* Any others are not "rare" objects. */
74 * @brief オブジェクトがアーティファクトかを返す /
75 * Check if an object is artifact
76 * @param o_ptr 対象のオブジェクト構造体ポインタ
77 * @return アーティファクトならばTRUEを返す
79 bool object_is_artifact(object_type *o_ptr) { return object_is_fixed_artifact(o_ptr) || (o_ptr->art_name != 0); }
82 * @brief オブジェクトがランダムアーティファクトかを返す /
83 * Check if an object is random artifact
84 * @param o_ptr 対象のオブジェクト構造体ポインタ
85 * @return ランダムアーティファクトならばTRUEを返す
87 bool object_is_random_artifact(object_type *o_ptr) { return object_is_artifact(o_ptr) && !object_is_fixed_artifact(o_ptr); }
90 * @brief オブジェクトが通常のアイテム(アーティファクト、エゴ、鍛冶師エッセンス付加いずれでもない)かを返す /
91 * Check if an object is neither artifact, ego, nor 'smith' object
92 * @param o_ptr 対象のオブジェクト構造体ポインタ
93 * @return 通常のアイテムならばTRUEを返す
95 bool object_is_nameless(player_type *player_ptr, object_type *o_ptr)
100 return !object_is_artifact(o_ptr) && !object_is_ego(o_ptr) && !object_is_smith(player_ptr, o_ptr);
104 * Artifacts use the "name1" field
106 bool object_is_fixed_artifact(object_type *o_ptr) { return o_ptr->name1 != 0; }
109 * Ego-Items use the "name2" field
111 bool object_is_ego(object_type *o_ptr) { return o_ptr->name2 != 0; }