6 * 2014 Deskull rearranged comment for Doxygen.
12 * @brief オブジェクトが薬であるかを返す
13 * @param o_ptr 対象のオブジェクト構造体ポインタ
14 * @return オブジェクトが薬ならばTRUEを返す
16 bool object_is_potion(object_type *o_ptr)
18 return (k_info[o_ptr->k_idx].tval == TV_POTION);
23 * @brief オブジェクトが賞金首の報酬対象になるかを返す
24 * @param o_ptr 対象のオブジェクト構造体ポインタ
25 * @return オブジェクトが報酬対象になるならTRUEを返す
27 bool object_is_shoukinkubi(object_type *o_ptr)
31 /* Require corpse or skeleton */
32 if (o_ptr->tval != TV_CORPSE) return FALSE;
34 /* No wanted monsters in vanilla town */
35 if (vanilla_town) return FALSE;
38 if (p_ptr->today_mon > 0 && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name))) return TRUE;
41 if (o_ptr->pval == MON_TSUCHINOKO) return TRUE;
44 for (i = 0; i < MAX_KUBI; i++)
45 if (o_ptr->pval == kubi_r_idx[i]) break;
46 if (i < MAX_KUBI) return TRUE;
53 * @brief オブジェクトがプレイヤーの職業に応じた適正武器か否かを返す / Favorite weapons
54 * @param o_ptr 対象のオブジェクト構造体ポインタ
55 * @return オブジェクトが適正武器ならばTRUEを返す
57 bool object_is_favorite(object_type *o_ptr)
59 /* Only melee weapons match */
60 if (!(o_ptr->tval == TV_POLEARM ||
61 o_ptr->tval == TV_SWORD ||
62 o_ptr->tval == TV_DIGGING ||
63 o_ptr->tval == TV_HAFTED))
68 /* Favorite weapons are varied depend on the class */
69 switch (p_ptr->pclass)
73 u32b flgs[TR_FLAG_SIZE];
74 object_flags_known(o_ptr, flgs);
76 if (!have_flag(flgs, TR_BLESSED) &&
77 !(o_ptr->tval == TV_HAFTED))
83 case CLASS_FORCETRAINER:
85 if (!(s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval]))
89 case CLASS_BEASTMASTER:
92 u32b flgs[TR_FLAG_SIZE];
93 object_flags_known(o_ptr, flgs);
95 /* Is it known to be suitable to using while riding? */
96 if (!(have_flag(flgs, TR_RIDING)))
104 if (s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval] <= WEAPON_EXP_BEGINNER)
109 /* All weapons are okay for non-special classes */
118 * @brief オブジェクトがレアアイテムかどうかを返す /
119 * Rare weapons/aromors including Blade of Chaos, Dragon armors, etc.
120 * @param o_ptr 対象のオブジェクト構造体ポインタ
121 * @return レアアイテムならばTRUEを返す
123 bool object_is_rare(object_type *o_ptr)
128 if (o_ptr->sval == SV_MACE_OF_DISRUPTION ||
129 o_ptr->sval == SV_WIZSTAFF) return TRUE;
133 if (o_ptr->sval == SV_SCYTHE_OF_SLICING ||
134 o_ptr->sval == SV_DEATH_SCYTHE) return TRUE;
138 if (o_ptr->sval == SV_BLADE_OF_CHAOS ||
139 o_ptr->sval == SV_DIAMOND_EDGE ||
140 o_ptr->sval == SV_DOKUBARI ||
141 o_ptr->sval == SV_HAYABUSA) return TRUE;
145 if (o_ptr->sval == SV_DRAGON_SHIELD ||
146 o_ptr->sval == SV_MIRROR_SHIELD) return TRUE;
150 if (o_ptr->sval == SV_DRAGON_HELM) return TRUE;
154 if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE) return TRUE;
158 if (o_ptr->sval == SV_ELVEN_CLOAK ||
159 o_ptr->sval == SV_ETHEREAL_CLOAK ||
160 o_ptr->sval == SV_SHADOW_CLOAK) return TRUE;
164 if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES) return TRUE;
168 if (o_ptr->sval == SV_KUROSHOUZOKU ||
169 o_ptr->sval == SV_ABUNAI_MIZUGI) return TRUE;
179 /* Any others are not "rare" objects. */
185 * @brief オブジェクトが武器として装備できるかどうかを返す / Check if an object is weapon (including bows and ammo)
186 * @param o_ptr 対象のオブジェクト構造体ポインタ
187 * @return 武器として使えるならばTRUEを返す
189 bool object_is_weapon(object_type *o_ptr)
191 if (TV_WEAPON_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END) return TRUE;
198 * @brief オブジェクトが武器や矢弾として使用できるかを返す / Check if an object is weapon (including bows and ammo)
199 * Rare weapons/aromors including Blade of Chaos, Dragon armors, etc.
200 * @param o_ptr 対象のオブジェクト構造体ポインタ
201 * @return 武器や矢弾として使えるならばTRUEを返す
203 bool object_is_weapon_ammo(object_type *o_ptr)
205 if (TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END) return TRUE;
211 * @brief オブジェクトが矢弾として使用できるかどうかを返す / Check if an object is ammo
212 * @param o_ptr 対象のオブジェクト構造体ポインタ
213 * @return 矢弾として使えるならばTRUEを返す
215 bool object_is_ammo(object_type *o_ptr)
217 if (TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_MISSILE_END) return TRUE;
223 * @brief オブジェクトが防具として装備できるかどうかを返す / Check if an object is armour
224 * @param o_ptr 対象のオブジェクト構造体ポインタ
225 * @return 矢弾として使えるならばTRUEを返す
227 bool object_is_armour(object_type *o_ptr)
229 if (TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END) return TRUE;
235 * @brief オブジェクトが武器、防具、矢弾として使用できるかを返す / Check if an object is weapon, armour or ammo
236 * @param o_ptr 対象のオブジェクト構造体ポインタ
237 * @return 武器、防具、矢弾として使えるならばTRUEを返す
239 bool object_is_weapon_armour_ammo(object_type *o_ptr)
241 if (object_is_weapon_ammo(o_ptr) || object_is_armour(o_ptr)) return TRUE;
248 * @brief オブジェクトが近接武器として装備できるかを返す / Melee weapons
249 * @param o_ptr 対象のオブジェクト構造体ポインタ
250 * @return 近接武器として使えるならばTRUEを返す
252 bool object_is_melee_weapon(object_type *o_ptr)
254 if (TV_DIGGING <= o_ptr->tval && o_ptr->tval <= TV_SWORD) return TRUE;
261 * @brief オブジェクトが装備可能であるかを返す / Wearable including all weapon, all armour, bow, light source, amulet, and ring
262 * @param o_ptr 対象のオブジェクト構造体ポインタ
263 * @return 装備可能ならばTRUEを返す
265 bool object_is_wearable(object_type *o_ptr)
267 if (TV_WEARABLE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEARABLE_END) return TRUE;
274 * @brief オブジェクトが装備品であるかを返す(object_is_wearableに矢弾を含む) / Equipment including all wearable objects and ammo
275 * @param o_ptr 対象のオブジェクト構造体ポインタ
276 * @return 装備品ならばTRUEを返す
278 bool object_is_equipment(object_type *o_ptr)
280 if (TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END) return TRUE;
287 * @brief オブジェクトが強化不能武器であるかを返す / Poison needle can not be enchanted
288 * @param o_ptr 対象のオブジェクト構造体ポインタ
289 * @return 強化不能ならばTRUEを返す
291 bool object_refuse_enchant_weapon(object_type *o_ptr)
293 if (o_ptr->tval == TV_SWORD && o_ptr->sval == SV_DOKUBARI) return TRUE;
300 * @brief オブジェクトが強化可能武器であるかを返す /
301 * Check if an object is weapon (including bows and ammo) and allows enchantment
302 * @param o_ptr 対象のオブジェクト構造体ポインタ
303 * @return 強化可能ならばTRUEを返す
305 bool object_allow_enchant_weapon(object_type *o_ptr)
307 if (object_is_weapon_ammo(o_ptr) && !object_refuse_enchant_weapon(o_ptr)) return TRUE;
314 * @brief オブジェクトが強化可能な近接武器であるかを返す /
315 * Check if an object is melee weapon and allows enchantment
316 * @param o_ptr 対象のオブジェクト構造体ポインタ
317 * @return 強化可能な近接武器ならばTRUEを返す
319 bool object_allow_enchant_melee_weapon(object_type *o_ptr)
321 if (object_is_melee_weapon(o_ptr) && !object_refuse_enchant_weapon(o_ptr)) return TRUE;
328 * @brief オブジェクトが鍛冶師のエッセンス付加済みかを返す /
329 * Check if an object is made by a smith's special ability
330 * @param o_ptr 対象のオブジェクト構造体ポインタ
331 * @return エッセンス付加済みならばTRUEを返す
333 bool object_is_smith(object_type *o_ptr)
335 if (object_is_weapon_armour_ammo(o_ptr) && o_ptr->xtra3) return TRUE;
341 * @brief オブジェクトがアーティファクトかを返す /
342 * Check if an object is artifact
343 * @param o_ptr 対象のオブジェクト構造体ポインタ
344 * @return アーティファクトならばTRUEを返す
346 bool object_is_artifact(object_type *o_ptr)
348 if (object_is_fixed_artifact(o_ptr) || o_ptr->art_name) return TRUE;
355 * @brief オブジェクトがランダムアーティファクトかを返す /
356 * Check if an object is random artifact
357 * @param o_ptr 対象のオブジェクト構造体ポインタ
358 * @return ランダムアーティファクトならばTRUEを返す
360 bool object_is_random_artifact(object_type *o_ptr)
362 if (object_is_artifact(o_ptr) && !object_is_fixed_artifact(o_ptr)) return TRUE;
368 * @brief オブジェクトが通常のアイテム(アーティファクト、エゴ、鍛冶師エッセンス付加いずれでもない)かを返す /
369 * Check if an object is neither artifact, ego, nor 'smith' object
370 * @param o_ptr 対象のオブジェクト構造体ポインタ
371 * @return 通常のアイテムならばTRUEを返す
373 bool object_is_nameless(object_type *o_ptr)
375 if (!object_is_artifact(o_ptr) && !object_is_ego(o_ptr) && !object_is_smith(o_ptr))
383 * @brief オブジェクトが両手持ち可能な武器かを返す /
384 * Check if an object is melee weapon and allows wielding with two-hands
385 * @param o_ptr 対象のオブジェクト構造体ポインタ
386 * @return 両手持ち可能ならばTRUEを返す
388 bool object_allow_two_hands_wielding(object_type *o_ptr)
390 if (object_is_melee_weapon(o_ptr) && ((o_ptr->weight > 99) || (o_ptr->tval == TV_POLEARM))) return TRUE;