/* ************************************************************************
* File: Guild.h *
* Usage: GuildMaster's: Definition for everything needed by shop.c *
* *
* Written by Jason Goodwin. jgoodwin@expert.cc.purdue.edu *
************************************************************************ */
struct guild_data {
int vnum; /* number of the guild */
int skills[SKILL_TABLE_SIZE]; /*array to keep track of which things we'll train */
float charge; /* charge * skill level = how much we'll charge */
char *no_such_skill; /* message when we don't teach that skill */
char *not_enough_gold; /* message when the student doesn't have enough gold */
int minlvl; /* Minumum level guildmaster will train */
int gm; /* GM's vnum */
int with_who[SW_ARRAY_MAX]; /* whom we dislike */
int open, close; /*when we will train */
SPECIAL(*func); /* secondary spec_proc for the GM */
};
#define GM_NUM(i) (guild_index[i].vnum)
#define GM_CHARGE(i) (guild_index[i].charge)
#define GM_MINLVL(i) (guild_index[i].minlvl)
#define GM_TRAINER(i) (guild_index[i].gm)
#define GM_WITH_WHO(i) (guild_index[i].with_who)
#define GM_OPEN(i) (guild_index[i].open)
#define GM_CLOSE(i) (guild_index[i].close)
#define GM_FUNC(i) (guild_index[i].func)
#define GM_NO_SKILL(i) (guild_index[i].no_such_skill)
#define GM_NO_GOLD(i) (guild_index[i].not_enough_gold)
#define GM_COST(i,j,k) (int) (GM_CHARGE(i)*spell_info[j].min_level[(int)GET_CLASS(k)])
#define NOTRAIN_GOOD(i) (IS_SET_AR((GM_WITH_WHO(i)),TRADE_NOGOOD))
#define NOTRAIN_EVIL(i) (IS_SET_AR((GM_WITH_WHO(i)),TRADE_NOEVIL))
#define NOTRAIN_NEUTRAL(i) (IS_SET_AR((GM_WITH_WHO(i)),TRADE_NONEUTRAL))
#define TRAIN_WIZARD(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_ONLYWIZARD))
#define TRAIN_CLERIC(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_ONLYCLERIC))
#define TRAIN_ROGUE(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_ONLYROGUE))
#define TRAIN_FIGHTER(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_ONLYFIGHTER))
#define TRAIN_MONK(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_ONLYMONK))
#define TRAIN_PALADIN(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_ONLYPALADIN))
#define NOTRAIN_WIZARD(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOWIZARD))
#define NOTRAIN_CLERIC(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOCLERIC))
#define NOTRAIN_ROGUE(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOROGUE))
#define NOTRAIN_FIGHTER(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOFIGHTER))
#define NOTRAIN_HUMAN(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOHUMAN))
#define NOTRAIN_ELF(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOELF))
#define NOTRAIN_GNOME(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOGNOME))
#define NOTRAIN_DWARF(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NODWARF))
#define NOTRAIN_HALF_ELF(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOHALF_ELF))
#define NOTRAIN_HALFLING(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOHALFLING))
#define NOTRAIN_DROW_ELF(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NODROW_ELF))
#define NOTRAIN_ANIMAL(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOANIMAL))
#define NOTRAIN_CONSTRUCT(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOCONSTRUCT))
#define NOTRAIN_DEMON(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NODEMON))
#define NOTRAIN_DRAGON(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NODRAGON))
#define NOTRAIN_FISH(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOFISH))
#define NOTRAIN_GIANT(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOGIANT))
#define NOTRAIN_GOBLIN(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOGOBLIN))
#define NOTRAIN_INSECT(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOINSECT))
#define NOTRAIN_ORC(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOORC))
#define NOTRAIN_SNAKE(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOSNAKE))
#define NOTRAIN_TROLL(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOTROLL))
#define NOTRAIN_HALF_ORC(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOHALF_ORC))
#define NOTRAIN_MINOTAUR(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOMINOTAUR))
#define NOTRAIN_KOBOLD(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOKOBOLD))
#define NOTRAIN_MINDFLAYER(i) (IS_SET_AR((GM_WITH_WHO(i)), TRADE_NOMINDFLAYER))
/* Functions defined in guild.c */
int print_skills_by_type(struct char_data *ch, char *buf, int maxsz, int sktype);
void levelup_parse(struct descriptor_data *d, char *arg);