/* ************************************************************************ * 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_and_spells[MAX_SKILLS+1]; /*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; /* 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((GM_WITH_WHO(i)),TRADE_NOGOOD)) #define NOTRAIN_EVIL(i) (IS_SET((GM_WITH_WHO(i)),TRADE_NOEVIL)) #define NOTRAIN_NEUTRAL(i) (IS_SET((GM_WITH_WHO(i)),TRADE_NONEUTRAL)) #define NOTRAIN_MAGIC_USER(i) (IS_SET((GM_WITH_WHO(i)),TRADE_NOMAGIC_USER)) #define NOTRAIN_CLERIC(i) (IS_SET((GM_WITH_WHO(i)),TRADE_NOCLERIC)) #define NOTRAIN_THIEF(i) (IS_SET((GM_WITH_WHO(i)),TRADE_NOTHIEF)) #define NOTRAIN_WARRIOR(i) (IS_SET((GM_WITH_WHO(i)),TRADE_NOWARRIOR)) #define NOTRAIN_HUMAN(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOHUMAN)) #define NOTRAIN_ELF(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOELF)) #define NOTRAIN_GNOME(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOGNOME)) #define NOTRAIN_DWARF(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NODWARF)) #define NOTRAIN_HALF_ELF(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOHALF_ELF)) #define NOTRAIN_HALFLING(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOHALFLING)) #define NOTRAIN_DROW_ELF(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NODROW_ELF)) #define NOTRAIN_ANIMAL(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOANIMAL)) #define NOTRAIN_CONSTRUCT(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOCONSTRUCT)) #define NOTRAIN_DEMON(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NODEMON)) #define NOTRAIN_DRAGON(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NODRAGON)) #define NOTRAIN_FISH(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOFISH)) #define NOTRAIN_GIANT(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOGIANT)) #define NOTRAIN_GOBLIN(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOGOBLIN)) #define NOTRAIN_INSECT(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOINSECT)) #define NOTRAIN_ORC(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOORC)) #define NOTRAIN_SNAKE(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOSNAKE)) #define NOTRAIN_TROLL(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOTROLL)) #define NOTRAIN_HALF_ORC(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOHALF_ORC)) #define NOTRAIN_MINOTAUR(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOMINOTAUR)) #define NOTRAIN_KOBOLD(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOKOBOLD)) #define NOTRAIN_MINDFLAYER(i) (IS_SET((GM_WITH_WHO(i)), TRADE_NOMINDFLAYER)) extern int prac_params[4][NUM_CLASSES]; #define LEARNED(ch) (prac_params[LEARNED_LEVEL][(int)GET_CLASS(ch)]) #define MINGAIN(ch) (prac_params[MIN_PER_PRAC][(int)GET_CLASS(ch)]) #define MAXGAIN(ch) (prac_params[MAX_PER_PRAC][(int)GET_CLASS(ch)]) #define SPLSKL(ch) (prac_types[prac_params[PRAC_TYPE][(int)GET_CLASS(ch)]])