/
Debug/
area/
data/
gods/
player/
player/skill/
extern		struct		node;
typedef		struct		node*		NODE			args( (void) );

/* skill_tree.c */
void		display_node							args( ( struct node* skill,CHAR_DATA *ch, CHAR_DATA *victim ) );
void		set_prefix								args( ( struct node* skill) );
char		*pull_skill								args( ( char *argument, char *arg_first ) );
void		print_node								args( ( struct node* skill ) );
void		set_skill_levels						args( ( CHAR_DATA *ch, int level) );
int			return_skill_sn							args( ( CHAR_DATA *ch, int sn) );
int			return_skill_str						args( ( CHAR_DATA *ch, char* skill_name) );
int			return_bonus_sn							args( ( CHAR_DATA *ch, int sn) );
int			return_bonus_str						args( ( CHAR_DATA *ch, char* skill_name) );
int			talent_level							args( ( CHAR_DATA *ch, char **tokens) );
int			talent_bonus							args( ( CHAR_DATA *ch, char **tokens) );
void		set_node_tn								args( (struct node* node,char * tn) );
void		boost_skill								args( ( CHAR_DATA *ch, char *skill_name,int ammount) );
int			calc_skill_cost							args( (CHAR_DATA *ch,char *skill_name,int level) );
void		set_bonus								args( (CHAR_DATA *ch,char *skill_name) );
void		update_bonus							args( (CHAR_DATA *ch,struct node *node) );
int			calc_skill_cost							args( (CHAR_DATA *ch,char *skill_name,int level) );
int			match_skill								args( ( const char *name, char * called_by ) );
void		set_parent_avg							args( (CHAR_DATA *ch,struct node *node) );
void		convert_char							args( (CHAR_DATA *ch));
int			weapon_talent							args( (int v0) );
int			sn_talent								args( (int sn) );
struct		node*		check_skill_tree			args( (char *first,char *arg,CHAR_DATA *ch,struct node *node) );
void		gain_sp									args( ( CHAR_DATA *ch, CHAR_DATA *victim) );

/* skill_table.c */
extern		struct				tree_skill_type		tree_skill_table	[MAX_TREE_SKILLS];
extern		const	struct		skill_stat_table	check_skill_group	[SKILL_GROUPS];

struct node
{
	char *	name;
	struct	node *x1;
	struct	node *x2;
	struct	node *x3;
	struct	node *x4;
	struct	node *x5;
	char *	prefix;
	char *	tn;	/*name which is used in fucntions, such as upgrade*/
	short	level;
};

struct node_type
{
    char *	name;
};

struct skill_stat_table
{
    char *	name;
	int		skill;
	int		stat;
};

struct	tree_skill_type
{
	char * name;
};

NODE(talloc);
NODE(empty);
NODE(uber);
NODE(combat);
	NODE(offense);
		NODE(slashing);
			NODE(swords);
			NODE(axes);
			NODE(polearms);
		NODE(bashing);
			NODE(maces);
			NODE(flails);
			NODE(staves);
		NODE(piercing);
			NODE(daggers);
			NODE(spears);
			NODE(missiles);
		NODE(unarmed);
	NODE(defense);
		NODE(dodging);
		NODE(parrying);
		NODE(countering);
		NODE(shield);
	NODE(special);
		NODE(berserk);
		NODE(mastery);
		NODE(multihit);

NODE(covert);
	NODE(stealth);
		NODE(stalking);
		NODE(hiding);
		NODE(sneaking);
		NODE(agility);
	NODE(manipulation);
		NODE(stealing);
			NODE(currency);
			NODE(inventory);
			NODE(equipped);
		NODE(lockpicking);
		NODE(poisons);

NODE(arcane);
	NODE(necromancy);
		NODE(summoning);
		NODE(reanimation);
	NODE(greater_elemental);
		NODE(a_g_fire);
		NODE(a_g_water);
		NODE(a_g_wind);
		NODE(a_g_earth);
		NODE(ether);
	NODE(a_alteration);
		NODE(a_a_object);
		NODE(a_a_person);
		NODE(a_a_immaterial);
	NODE(a_protection);
		NODE(a_p_magical);
		NODE(a_p_physical);

NODE(worship);
	NODE(benediction);
		NODE(protection);
			NODE(w_b_p_physical);
			NODE(w_b_p_magical);
			NODE(w_b_p_spiritual);
		NODE(healing);
			NODE(restoration);
			NODE(curative);
		NODE(enhancement);
			NODE(mind);
			NODE(body);
	NODE(maladiction);
		NODE(affliction);
		NODE(offensive);

NODE(sorcery);
     NODE(heraldic);
		NODE(detection);
		NODE(illusion);
		NODE(conjuration);
		NODE(transportation);
		NODE(enchantment);
			NODE(s_i_e_person);
			NODE(s_i_e_object);
	NODE(wizardry);
		NODE(elemental);
		NODE(weather);
		NODE(psionic);

/*
 * Enumeration of all the skills for indexes
 * within talent arrays (pts,bonus,and cost)
 */
typedef enum
{
	/*combat talents*/
	com,		com_o,		com_o_s,
	com_o_s_s,	com_o_s_a,	com_o_s_p,
	com_o_b,	com_o_b_m,	com_o_b_f,
	com_o_b_s,	com_o_p,	com_o_p_d,
	com_o_p_s,	com_o_p_m,	com_o_u,
	com_d,		com_d_p,	com_d_d,
	com_d_c,	com_d_s,	com_s,		
	com_s_mu,	com_s_b,	com_s_ma,	

	/*covert talents*/
	cov,		cov_s,		cov_s_st,
	cov_s_h,	cov_s_sn,	cov_s_a,
	cov_m,		cov_m_s,	cov_m_s_c,
	cov_m_s_i,	cov_m_s_e,	cov_m_l,
	cov_m_p,

	/*arcane talents*/
	arc,		arc_n,		arc_n_s,
	arc_n_r,	arc_g,		arc_g_f,
	arc_g_wi,	arc_g_wa,	arc_g_ea,
	arc_g_et,	arc_a,		arc_a_o,
	arc_a_p,	arc_a_im,	arc_p,
	arc_p_m,	arc_p_p,

	/*worship talents*/
	wor,		wor_b,		wor_b_p,
	wor_b_p_p,	wor_b_p_m,	wor_b_p_s,
	wor_b_h,	wor_b_h_r,	wor_b_h_c,
	wor_b_e,	wor_b_e_m,	wor_b_e_b,
	wor_b_m,	wor_b_b,	wor_m,
	wor_m_a,	wor_m_o,

	/*sorcer talents*/
	sor,		sor_h,		sor_h_d,
	sor_h_i,	sor_h_c,	sor_h_t,
	sor_h_e,	sor_h_e_p,	sor_h_e_o,
	sor_w,		sor_w_e,	sor_w_w,
	sor_w_p
}talent;