Go to the documentation of this file.
59 "You are unable to read while blind.");
67 "You are unable to decipher the strange symbols.");
70 lev_diff =
op->level-(skill_ob->
level+5);
74 "This book is just barely beyond your comprehension.");
75 else if (lev_diff < 3)
77 "This book is slightly beyond your comprehension.");
78 else if (lev_diff < 5)
80 "This book is beyond your comprehension.");
81 else if (lev_diff < 8)
83 "This book is quite a bit beyond your comprehension.");
84 else if (lev_diff < 15)
86 "This book is way beyond your comprehension.");
89 "This book is totally beyond your comprehension.");
93 if (
op->msg == NULL) {
95 "You open the %s and find it empty.",
102 "You open the %s and start reading.\n%s",
#define QUERY_FLAG(xyz, p)
static method_ret book_type_apply(object *op, object *applier, int aflags)
void knowledge_read(player *pl, object *book)
const readable_message_type * get_readable_message_type(object *readable)
int64_t calc_skill_exp(const object *who, const object *op, const object *skill)
object * find_skill_by_name(object *who, const char *name)
void init_type_book(void)
char * ob_describe(const object *op, const object *observer, int use_media_tags, char *buf, size_t size)
void register_apply(int ob_type, apply_func method)
void esrv_update_item(int flags, object *pl, object *op)
void change_exp(object *op, int64_t exp, const char *skill_name, int flag)
#define MSG_TYPE_APPLY_FAILURE
void draw_ext_info(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *message)
#define FLAG_NO_SKILL_IDENT
#define MSG_TYPE_APPLY_ERROR
void draw_ext_info_format(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...)