summaryrefslogblamecommitdiffstats
path: root/crawl-ref/source/itemname.h
blob: bd499661189457ad7870958bb4a7adc05d0a67bf (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
  
                          

                               







                    

                                                   
 





                                





                      
                  


              
                                                                    



















                                   
                                                                    




















                                      
                                

                                                    
                                                                                
 
                                              
 

                                                                         
 
                                             
                                                                              
                                             
 
                                                 

                                               

                                                                 
                                                              
 

                                                                         
 
                                                                
                                                              
 
                       
 

                                                                      
                           
                                                             

                                                                  

                                                                     
                                                             
                                                                          
 






                                                                            
 




                                                                  

                                         
                                                    

                                                             
 
      
/*
 *  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