DBTFF/clans/
DBTFF/deity/
DBTFF/houses/
DBTFF/player/a/
DBTFF/space/
/* Rank Code by Chili
 */

#ifndef _RANK_H_
#define _RANK_H_


#define RANK_EFFECT(x) void x(CHAR_DATA *ch)

#define sbuf_chr(x, buf, bp) ((*(bp) - (buf) >= MAX_STRING_LENGTH - 1) ?  1 : (*(*(bp))++ = (x), 0))



struct rank_table_t {
  char *color_prefix; /* Prefixing color string for showrank */
  char *rank_name_m; /* Rank Male or Neutered Name */
  char *rank_name_f; /* Rank Female Name or NULL if default to male */
  void (*func_gain)(CHAR_DATA *); /* To apply special affects and what not obtaining this rank */
  void (*func_loss)(CHAR_DATA *); /* To apply special affects and what not losing this rank */
  bool (*race)(CHAR_DATA *); /* Race */
  double long pl_req; /* Powerlevel required to claim rank */
  short value; /* Rank Value */
};

struct rank_tables_list_t {
  char *name; /* Name of Rank Table */
  char **rank;
  short high;
  bool (*race)(CHAR_DATA *); /* function to check race */
};

void initialize_ranks();
int string_prefix(char *, char *);
void save_ranks(FILE *);
void load_rank(char *, int, char *);
char *get_ch_rank(CHAR_DATA *);
char *get_ch_rank_at(CHAR_DATA *, int);
char *mud_capstr(char *);
int get_rank_list_num(CHAR_DATA *ch);
int sbuf_format(char *, char **, const char *, ...);
int has_rank(CHAR_DATA *);

/* Effect Protos */
RANK_EFFECT(overlord_gain);
RANK_EFFECT(overlord_loss);
RANK_EFFECT(icer_king_loss);
RANK_EFFECT(icer_king_gain);
RANK_EFFECT(supreme_kai_loss);
RANK_EFFECT(supreme_kai_gain);
RANK_EFFECT(saiyan_king_loss);
RANK_EFFECT(saiyan_king_gain);
RANK_EFFECT(sanctuary_loss);
RANK_EFFECT(great_saiya_gain);
RANK_EFFECT(great_saiya_loss);

#endif /* _RANK_H_ */