33 object *applier,
int aflags);
60 "You are unable to read while blind.", NULL);
63 if (op->
msg == NULL) {
65 "You open the %s and find it empty.",
66 "You open the %s and find it empty.",
75 "You are unable to decipher the strange symbols.", NULL);
82 "This book is just barely beyond your comprehension.", NULL);
83 else if (lev_diff < 3)
85 "This book is slightly beyond your comprehension.", NULL);
86 else if (lev_diff < 5)
88 "This book is beyond your comprehension.", NULL);
89 else if (lev_diff < 8)
91 "This book is quite a bit beyond your comprehension.", NULL);
92 else if (lev_diff < 15)
94 "This book is way beyond your comprehension.", NULL);
97 "This book is totally beyond your comprehension.", NULL);
110 "You open the %s and start reading.\n%s",
111 "You open the %s and start reading.\n%s",
void change_exp(object *op, sint64 exp, const char *skill_name, int flag)
void init_type_book(void)
#define MSG_TYPE_APPLY_FAILURE
void esrv_update_item(int flags, object *pl, object *op)
void draw_ext_info(int flags, int pri, const object *pl, uint8 type, uint8 subtype, const char *message, const char *oldmessage)
void draw_ext_info_format(int flags, int pri, const object *pl, uint8 type, uint8 subtype, const char *new_format, const char *old_format,...)
static method_ret book_type_apply(ob_methods *context, object *op, object *applier, int aflags)
sint64 calc_skill_exp(object *who, object *op, object *skill)
void register_apply(int ob_type, apply_func method)
#define QUERY_FLAG(xyz, p)
char * ob_describe(const object *op, const object *observer, char *buf, size_t size)
#define MSG_TYPE_APPLY_ERROR
const readable_message_type * get_readable_message_type(object *readable)
#define FLAG_NO_SKILL_IDENT
object * find_skill_by_name(object *who, const char *name)