/*
* File: itemname.h
* Summary: Misc functions.
* Written by: Linley Henzell
*/
#ifndef ITEMNAME_H
#define ITEMNAME_H
#include "externs.h"
#define CORPSE_NAME_KEY "corpse_name_key"
#define CORPSE_NAME_TYPE_KEY "corpse_name_type_key"
struct item_types_pair
{
object_class_type base_type;
unsigned char sub_type;
};
enum item_type_id_type
{
IDTYPE_WANDS = 0,
IDTYPE_SCROLLS,
IDTYPE_JEWELLERY,
IDTYPE_POTIONS,
IDTYPE_STAVES,
NUM_IDTYPE
};
// [dshaligram] If you edit potion colours/descriptions, also update
// itemname.cc.
enum potion_description_colour_type
{
PDC_CLEAR,
PDC_BLUE,
PDC_BLACK,
PDC_SILVERY,
PDC_CYAN,
PDC_PURPLE,
PDC_ORANGE,
PDC_INKY,
PDC_RED,
PDC_YELLOW,
PDC_GREEN,
PDC_BROWN,
PDC_PINK,
PDC_WHITE,
PDC_NCOLOURS
};
// [dshaligram] If you edit potion colours/descriptions, also update
// itemname.cc.
enum potion_description_qualifier_type
{
PDQ_NONE,
PDQ_BUBBLING,
PDQ_FUMING,
PDQ_FIZZY,
PDQ_VISCOUS,
PDQ_LUMPY,
PDQ_SMOKY,
PDQ_GLOWING,
PDQ_SEDIMENTED,
PDQ_METALLIC,
PDQ_MURKY,
PDQ_GLUGGY,
PDQ_OILY,
PDQ_SLIMY,
PDQ_EMULSIFIED,
PDQ_NQUALS
};
bool is_vowel( const char chr );
int property( const item_def &item, int prop_type );
const char* racial_description_string(const item_def& item, bool terse = false);
bool check_item_knowledge(bool quiet = false);
std::string quant_name( const item_def &item, int quant,
description_level_type des, bool terse = false );
bool item_type_known( const item_def &item );
bool item_type_known( const object_class_type base_type, const int sub_type );
bool item_type_tried( const item_def &item );
bool is_interesting_item( const item_def& item );
bool is_emergency_item( const item_def& item );
bool is_good_item(const item_def &item);
bool is_bad_item(const item_def &item, bool temp = false);
bool is_dangerous_item( const item_def& item, bool temp = false);
bool is_useless_item(const item_def &item, bool temp = false);
std::string make_name(unsigned long seed, bool all_caps, int maxlen = -1,
char start = 0);
const char* weapon_brand_name(const item_def& item, bool terse);
const char* armour_ego_name(const item_def& item, bool terse);
void init_properties();
typedef FixedArray < item_type_id_state_type, NUM_IDTYPE, 50 > id_arr;
id_arr& get_typeid_array();
item_type_id_state_type get_ident_type(const item_def &item);
item_type_id_state_type get_ident_type(object_class_type basetype,
int subtype);
void set_ident_type( item_def &item, item_type_id_state_type setting,
bool force = false);
void set_ident_type( object_class_type basetype, int subtype,
item_type_id_state_type setting, bool force = false);
std::string menu_colour_item_prefix(const item_def &item, bool temp = true);
std::string filtering_item_prefix(const item_def &item, bool temp = true);
std::string get_menu_colour_prefix_tags(const item_def &item,
description_level_type desc);
std::string get_message_colour_tags(const item_def &item,
description_level_type desc,
msg_channel_type channel = MSGCH_PLAIN);
void init_item_name_cache();
item_types_pair item_types_by_name(std::string name);
std::vector<std::string> item_name_list_for_glyph(unsigned glyph);
const char* wand_type_name(int wandtype);
bool is_named_corpse(const item_def &corpse);
std::string get_corpse_name(const item_def &corpse,
unsigned long *name_type = NULL);
#endif