/**************************************************************************
* # # # ## # # ### ## ## ### http://www.lyonesse.it *
* # # # # # ## # # # # # *
* # # # # # ## ## # # ## ## ## # # ## *
* # # # # # ## # # # # # # # # # # # *
* ### # ## # # ### ## ## ### # # #### ## Ver. 1.0 *
* *
* -Based on CircleMud & Smaug- Copyright (c) 2001-2002 by Mithrandir *
* *
* ********************************************************************** */
/**************************************************************************
* File: clan.h Part of CircleMUD *
* *
* All rights reserved. See license.doc for complete information. *
* *
* Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
* CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. *
**************************************************************************/
typedef struct clan_data CLAN_DATA;
typedef struct politics_data_type CLAN_POLITIC_DATA;
#define MAX_CLANS 20
#define MIN_CLAN_MEMBERS 5
#define MAX_CLAN_MEMBERS 50
#define RANK_INVITED 0
#define RANK_APPLIER 1
#define RANK_MEMBER_FIRST 2
#define MAX_RANK_ADVANCE 6
#define RANK_PRIVILEGES 8
#define RANK_DIPLOMAT 7
#define RANK_MAGISTRATE 8
#define RANK_HERO 9
#define RANK_LEADER 10
#define RANK_PATRON 11
#define LVL_CLAN_GOD LVL_GOD
#define DEFAULT_APP_LVL 8
#define CLAN_NAME_L 128
#define MAX_CLAN_OBJ 3
#define GET_RANK_NAME(ch) (clan_rank_table[GET_CLAN_RANK(ch)].title_of_rank[GET_SEX(ch)])
#define CM_DUES 1
#define CM_APPFEE 2
#define CB_DEPOSIT 1
#define CB_WITHDRAW 2
/* Clan class restrictions: used in clan_data.anti_class */
#define CLAN_ANTI_MAGE (1 << 0)
#define CLAN_ANTI_CLERIC (1 << 1)
#define CLAN_ANTI_THIEF (1 << 2)
#define CLAN_ANTI_WARRIOR (1 << 3)
#define CLAN_ANTI_SORCERER (1 << 4)
/* Clan race restrictions: used in clan_data.anti_race */
#define CLAN_ANTI_HUMAN (1 << 0)
#define CLAN_ANTI_ELF (1 << 1)
#define CLAN_ANTI_DWARF (1 << 2)
/* Clan others restrictions: used in clan_data.anti_other */
#define CLAN_ANTI_GOOD (1 << 0)
#define CLAN_ANTI_NEUTRAL (1 << 1)
#define CLAN_ANTI_EVIL (1 << 2)
#define CLAN_ANTI_PK (1 << 3) /* no Player Killer in the clan */
#define CLAN_ANTI_PT (1 << 4) /* no Player Thief in the clan */
#define CLAN_ONLY_PK (1 << 5) /* only Player Killer in the clan */
#define CLAN_ONLY_PT (1 << 6) /* only Player Thief in the clan */
#define CLAN_ANTI_MALE (1 << 7)
#define CLAN_ANTI_FEMALE (1 << 8)
/* Clan status: used in clan_data.status */
#define CLAN_FORMING (1 << 0) /* less than MIN_CLAN_MEMBERS clannies */
#define CLAN_ACTIVE (1 << 1) /* normal status of a clan */
#define CLAN_INACTIVE (1 << 2) /* reached the MAX_CLAN_MEMBERS number */
#define CLAN_DISBANDING (1 << 3) /* a clan that's going to die */
#define CLAN_DEAD (1 << 4) /* a dead clan */
/* Clan types: used in clan_data.ctype */
#define CLAN_NORMAL (1 << 0)
#define CLAN_PRIVATE (1 << 1) /* a clan that does not accept new members freely */
#define CLAN_SECRET (1 << 2) /* a secret clan */
struct clan_data
{
CLAN_DATA *next;
char *name; /* name of the clan */
char *abbr; /* abbreviation (MAX 5 CHARS) */
char *leader; /* name of the clan leader */
char *godname; /* name of the sponsor god */
char *motto; /* il motto del clan */
char *warcry; /* il grido di guerra del clan */
sh_int id; /* unique number of the clan */
sh_int members; /* number of members of the clan */
sh_int magistrates; /* number of magistrates in the clan */
sh_int ambassadors; /* number of diplomats in the clan */
sh_int heroes; /* number of heroes in the clan */
sh_int app_level; /* min level to join the clan */
sh_int max_level; /* max level to be member of the clan */
sh_int status; /* status of the clan */
sh_int ctype; /* type of clan */
int anti_class;
int anti_race;
int anti_other;
int power; /* military power of the clan */
int influence; /* political influence of the clan */
int treasure; /* ricchezza del clan */
int app_fee; /* gold required to join the clan */
int dues; /* quota mensile */
int hall; /* vnum of main clan building */
obj_vnum objs[MAX_CLAN_OBJ]; /* vnum of personalized clan objs */
time_t birth; /* data di formazione del clan */
};
struct politics_data_type
{
sh_int diplomacy[MAX_CLANS][MAX_CLANS];
bool daily_negotiate_table[MAX_CLANS][MAX_CLANS];
bool end_current_state[MAX_CLANS][MAX_CLANS];
};
struct clan_titles
{
char *title_of_rank[3];
};
/* functions */
void save_clans(void);
void init_clans(void);
CLAN_DATA *get_clan(int clan_id);
CLAN_DATA *find_clan(char *name);