return (FALSE);
}
+
+/*!
+ * @brief オブジェクトがプレイヤーが使用可能な魔道書かどうかを判定する
+ * @param o_ptr 判定したいオブ会ジェクトの構造体参照ポインタ
+ * @return 学習できる魔道書ならばTRUEを返す
+ */
+bool item_tester_learn_spell(object_type *o_ptr)
+{
+ s32b choices = realm_choices2[p_ptr->pclass];
+
+ if (p_ptr->pclass == CLASS_PRIEST)
+ {
+ if (is_good_realm(p_ptr->realm1))
+ {
+ choices &= ~(CH_DEATH | CH_DAEMON);
+ }
+ else
+ {
+ choices &= ~(CH_LIFE | CH_CRUSADE);
+ }
+ }
+
+ if ((o_ptr->tval < TV_LIFE_BOOK) || (o_ptr->tval > (TV_LIFE_BOOK + MAX_REALM - 1))) return (FALSE);
+ if ((o_ptr->tval == TV_MUSIC_BOOK) && (p_ptr->pclass == CLASS_BARD)) return (TRUE);
+ else if (!is_magic(tval2realm(o_ptr->tval))) return FALSE;
+ if ((REALM1_BOOK == o_ptr->tval) || (REALM2_BOOK == o_ptr->tval)) return (TRUE);
+ if (choices & (0x0001 << (tval2realm(o_ptr->tval) - 1))) return (TRUE);
+ return (FALSE);
+}
+
+/*!
+ * @brief オブジェクトが高位の魔法書かどうかを判定する
+ * @param o_ptr 判定したいオブジェクトの構造体参照ポインタ
+ * @return オブジェクトが高位の魔法書ならばTRUEを返す
+ */
+bool item_tester_high_level_book(object_type *o_ptr)
+{
+ if ((o_ptr->tval == TV_LIFE_BOOK) ||
+ (o_ptr->tval == TV_SORCERY_BOOK) ||
+ (o_ptr->tval == TV_NATURE_BOOK) ||
+ (o_ptr->tval == TV_CHAOS_BOOK) ||
+ (o_ptr->tval == TV_DEATH_BOOK) ||
+ (o_ptr->tval == TV_TRUMP_BOOK) ||
+ (o_ptr->tval == TV_CRAFT_BOOK) ||
+ (o_ptr->tval == TV_DAEMON_BOOK) ||
+ (o_ptr->tval == TV_CRUSADE_BOOK) ||
+ (o_ptr->tval == TV_MUSIC_BOOK) ||
+ (o_ptr->tval == TV_HEX_BOOK))
+ {
+ if (o_ptr->sval > 1)
+ return TRUE;
+ else
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+/*!
+ * @brief オブジェクトがランタンの燃料になるかどうかを判定する
+ * An "item_tester_hook" for refilling lanterns
+ * @param o_ptr 判定したいオブジェクトの構造体参照ポインタ
+ * @return オブジェクトがランタンの燃料になるならばTRUEを返す
+ */
+bool item_tester_refill_lantern(object_type *o_ptr)
+{
+ /* Flasks of oil are okay */
+ if (o_ptr->tval == TV_FLASK) return (TRUE);
+
+ /* Laterns are okay */
+ if ((o_ptr->tval == TV_LITE) &&
+ (o_ptr->sval == SV_LITE_LANTERN)) return (TRUE);
+
+ /* Assume not okay */
+ return (FALSE);
+}
+