Go to the documentation of this file.
60 "You are unable to read while blind.");
68 "You are unable to decipher the strange symbols.");
71 lev_diff =
op->level-(skill_ob->
level+5);
75 "This book is just barely beyond your comprehension.");
76 else if (lev_diff < 3)
78 "This book is slightly beyond your comprehension.");
79 else if (lev_diff < 5)
81 "This book is beyond your comprehension.");
82 else if (lev_diff < 8)
84 "This book is quite a bit beyond your comprehension.");
85 else if (lev_diff < 15)
87 "This book is way beyond your comprehension.");
90 "This book is totally beyond your comprehension.");
94 if (
op->msg == NULL) {
96 "You open the %s and find it empty.",
103 "You open the %s and start reading.\n%s",
#define QUERY_FLAG(xyz, p)
void register_apply(int ob_type, apply_func method)
void draw_ext_info_format(int flags, int pri, const object *pl, uint8_t type, uint8_t subtype, const char *format,...) PRINTF_ARGS(6
static method_ret book_type_apply(object *op, object *applier, int aflags)
void knowledge_read(player *pl, object *book)
int64_t calc_skill_exp(const object *who, const object *op, const object *skill)
char * ob_describe(const object *op, const object *observer, int use_media_tags, char *buf, size_t size)
void change_exp(object *op, int64_t exp, const char *skill_name, int flag)
object * find_skill_by_name(object *who, const char *name)
void init_type_book(void)
void esrv_update_item(int flags, object *pl, object *op)
#define MSG_TYPE_APPLY_FAILURE
const readable_message_type * get_readable_message_type(object *readable)
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