6 bool object_is_potion(object_type *o_ptr)
8 return (k_info[o_ptr->k_idx].tval == TV_POTION);
12 bool object_is_shoukinkubi(object_type *o_ptr)
16 /* Require corpse or skeleton */
17 if (o_ptr->tval != TV_CORPSE) return FALSE;
19 /* No wanted monsters in vanilla town */
20 if (vanilla_town) return FALSE;
23 if (p_ptr->today_mon > 0 && (streq(r_name + r_info[o_ptr->pval].name, r_name + r_info[today_mon].name))) return TRUE;
26 if (o_ptr->pval == MON_TSUCHINOKO) return TRUE;
29 for (i = 0; i < MAX_KUBI; i++)
30 if (o_ptr->pval == kubi_r_idx[i]) break;
31 if (i < MAX_KUBI) return TRUE;
41 bool object_is_favorite(object_type *o_ptr)
43 /* Only melee weapons match */
44 if (!(o_ptr->tval == TV_POLEARM ||
45 o_ptr->tval == TV_SWORD ||
46 o_ptr->tval == TV_DIGGING ||
47 o_ptr->tval == TV_HAFTED))
52 /* Favorite weapons are varied depend on the class */
53 switch (p_ptr->pclass)
57 u32b flgs[TR_FLAG_SIZE];
58 object_flags_known(o_ptr, flgs);
60 if (!have_flag(flgs, TR_BLESSED) &&
61 !(o_ptr->tval == TV_HAFTED))
67 case CLASS_FORCETRAINER:
69 if (!(s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval]))
73 case CLASS_BEASTMASTER:
76 u32b flgs[TR_FLAG_SIZE];
77 object_flags_known(o_ptr, flgs);
79 /* Is it known to be suitable to using while riding? */
80 if (!(have_flag(flgs, TR_RIDING)))
88 if (s_info[p_ptr->pclass].w_max[o_ptr->tval-TV_WEAPON_BEGIN][o_ptr->sval] <= WEAPON_EXP_BEGINNER)
93 /* All weapons are okay for non-special classes */
102 * Rare weapons/aromors
103 * including Blade of Chaos, Dragon armors, etc.
105 bool object_is_rare(object_type *o_ptr)
110 if (o_ptr->sval == SV_MACE_OF_DISRUPTION ||
111 o_ptr->sval == SV_WIZSTAFF) return TRUE;
115 if (o_ptr->sval == SV_SCYTHE_OF_SLICING ||
116 o_ptr->sval == SV_DEATH_SCYTHE) return TRUE;
120 if (o_ptr->sval == SV_BLADE_OF_CHAOS ||
121 o_ptr->sval == SV_DIAMOND_EDGE ||
122 o_ptr->sval == SV_DOKUBARI ||
123 o_ptr->sval == SV_HAYABUSA) return TRUE;
127 if (o_ptr->sval == SV_DRAGON_SHIELD ||
128 o_ptr->sval == SV_MIRROR_SHIELD) return TRUE;
132 if (o_ptr->sval == SV_DRAGON_HELM) return TRUE;
136 if (o_ptr->sval == SV_PAIR_OF_DRAGON_GREAVE) return TRUE;
140 if (o_ptr->sval == SV_ELVEN_CLOAK ||
141 o_ptr->sval == SV_ETHEREAL_CLOAK ||
142 o_ptr->sval == SV_SHADOW_CLOAK) return TRUE;
146 if (o_ptr->sval == SV_SET_OF_DRAGON_GLOVES) return TRUE;
150 if (o_ptr->sval == SV_KUROSHOUZOKU ||
151 o_ptr->sval == SV_ABUNAI_MIZUGI) return TRUE;
161 /* Any others are not "rare" objects. */
167 * Check if an object is weapon (including bows and ammo)
169 bool object_is_weapon(object_type *o_ptr)
171 if (TV_WEAPON_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END) return TRUE;
178 * Check if an object is weapon (including bows and ammo)
180 bool object_is_weapon_ammo(object_type *o_ptr)
182 if (TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEAPON_END) return TRUE;
189 * Check if an object is ammo
191 bool object_is_ammo(object_type *o_ptr)
193 if (TV_MISSILE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_MISSILE_END) return TRUE;
200 * Check if an object is armour
202 bool object_is_armour(object_type *o_ptr)
204 if (TV_ARMOR_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_ARMOR_END) return TRUE;
211 * Check if an object is weapon, armour or ammo
213 bool object_is_weapon_armour_ammo(object_type *o_ptr)
215 if (object_is_weapon_ammo(o_ptr) || object_is_armour(o_ptr)) return TRUE;
224 bool object_is_melee_weapon(object_type *o_ptr)
226 if (TV_DIGGING <= o_ptr->tval && o_ptr->tval <= TV_SWORD) return TRUE;
233 * Wearable including all weapon, all armour, bow, light source, amulet, and ring
235 bool object_is_wearable(object_type *o_ptr)
237 if (TV_WEARABLE_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_WEARABLE_END) return TRUE;
244 * Equipment including all wearable objects and ammo
246 bool object_is_equipment(object_type *o_ptr)
248 if (TV_EQUIP_BEGIN <= o_ptr->tval && o_ptr->tval <= TV_EQUIP_END) return TRUE;
255 * Poison needle can not be enchanted
257 bool object_refuse_enchant_weapon(object_type *o_ptr)
259 if (o_ptr->tval == TV_SWORD && o_ptr->sval == SV_DOKUBARI) return TRUE;
266 * Check if an object is weapon (including bows and ammo) and allows enchantment
268 bool object_allow_enchant_weapon(object_type *o_ptr)
270 if (object_is_weapon_ammo(o_ptr) && !object_refuse_enchant_weapon(o_ptr)) return TRUE;
277 * Check if an object is melee weapon and allows enchantment
279 bool object_allow_enchant_melee_weapon(object_type *o_ptr)
281 if (object_is_melee_weapon(o_ptr) && !object_refuse_enchant_weapon(o_ptr)) return TRUE;
288 * Check if an object is made by a smith's special ability
290 bool object_is_smith(object_type *o_ptr)
292 if (object_is_weapon_armour_ammo(o_ptr) && o_ptr->xtra3) return TRUE;
299 * Check if an object is artifact
301 bool object_is_artifact(object_type *o_ptr)
303 if (object_is_fixed_artifact(o_ptr) || o_ptr->art_name) return TRUE;
310 * Check if an object is random artifact
312 bool object_is_random_artifact(object_type *o_ptr)
314 if (object_is_artifact(o_ptr) && !object_is_fixed_artifact(o_ptr)) return TRUE;
321 * Check if an object is neither artifact, ego, nor 'smith' object
323 bool object_is_nameless(object_type *o_ptr)
325 if (!object_is_artifact(o_ptr) && !object_is_ego(o_ptr) && !object_is_smith(o_ptr))
333 * Check if an object is melee weapon and allows wielding with two-hands
335 bool object_allow_two_hands_wielding(object_type *o_ptr)
337 if (object_is_melee_weapon(o_ptr) && ((o_ptr->weight > 99) || (o_ptr->tval == TV_POLEARM))) return TRUE;