kbkmud/player/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
 *  Chastain, Michael Quan, and Mitchell Tse.                              *
 *                                                                         *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc       *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.                                               *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  *
 ***************************************************************************/

/***************************************************************************
*	ROM 2.4 is copyright 1993-1996 Russ Taylor			   *
*	ROM has been brought to you by the ROM consortium		   *
*	    Russ Taylor (rtaylor@pacinfo.com)				   *
*	    Gabrielle Taylor (gtaylor@pacinfo.com)			   *
*	    Brian Moore (rom@rom.efn.org)				   *
*	By using this code, you have agreed to follow the terms of the	   *
*	ROM license, in the file Tartarus/doc/rom.license                  *
***************************************************************************/

/***************************************************************************
*       Tartarus code is copyright (C) 1997-1998 by Daniel Graham          *
*	In using this code you agree to comply with the Tartarus license   *
*       found in the file /Tartarus/doc/tartarus.doc                       *
***************************************************************************/

#include "include.h"

/* for cabals 
 *
 * NEVER set the max number to 0, ever, ever, ever or we won't boot until you change it
 * back. This goes all the way back to math class when you leanred about dividing with zero
 */

const struct cabal_type cabal_table[MAX_CABAL] =
{
    /*  name,		who entry,	death room,	      max ppl,independent, open/closed */
    /* independent should be FALSE if is a real cabal */
    {   "",             "",              "",	ROOM_VNUM_ALTAR,       
    	1,	1,	TRUE , FALSE },
    {   "ancient",      "[ANCIENT] ",    "Masters of Intrigue",	
    	ROOM_VNUM_ANCIENT,     3801,	0,	0,	50,	FALSE, FALSE, 	TRUE },
    	
    {   "knight",       "[KNIGHT] ",     "Knights of Thera",	
    	ROOM_VNUM_KNIGHT,      4502,	0,	0,	50,	FALSE, FALSE, 	TRUE },
    	
    {   "arcana",       "[ARCANA] ",     "Masters of the Five Magics",	
    	ROOM_VNUM_ARCANA,      5801,	0,	0,	50,	FALSE, FALSE, 	TRUE  },
    	
    {   "rager",        "[RAGER] ",      "Battleragers, Haters of Magic",	
    	ROOM_VNUM_RAGER,       5701,	0,	0,	50,	FALSE, FALSE,	TRUE },
    	
    {   "outlaw",       "[OUTLAW] ",     "Outlaw, Barons of Chaos",	
    	ROOM_VNUM_OUTLAW,      9902,	0,	0,	50,	FALSE, FALSE,	TRUE  },
    	
    {   "empire",       "[EMPIRE] ",     "Empire, Subjugator of Nations",	
    	ROOM_VNUM_ALTAR,       8101,	0,	0,	50,	FALSE, FALSE,	TRUE },
    	
    {   "bounty",	"[BOUNTY] ",	"Bounty Hunters",	
    	ROOM_VNUM_ALTAR,       8800,	0,	0,	50,	FALSE, FALSE,	TRUE  },

    {   "sylvan",	"[SYLVAN] ",	"Sylvan Warders of the Glades",	
    	ROOM_VNUM_ALTAR,       8900,	0,	0,	50,	FALSE, FALSE,	TRUE },

    {
	"enforcer",	"[ENFORCER] ",	"Enforcers of Justice",
	ROOM_VNUM_ALTAR,	4521,	0,	0,	50,	FALSE, FALSE, 	TRUE }
};


const struct cabal_restr_type cabal_restr_table[MAX_CABAL] = {
	{	// None
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		ALIGN_NONE,
		ETHOS_NONE
	},

	{	// Ancient
		{1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1},
		{0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0},
		ALIGN_E,
		ETHOS_ANY
	},

	{	// Knight
		{1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1},
		{0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0},
		ALIGN_G,
		ETHOS_ANY,
	},

	{	// Arcana
		{0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0},
		{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0},
		ALIGN_ANY,
		ETHOS_ANY,
	},

	{	// Rager
		{1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0},
		{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0},
		ALIGN_ANY,
		ETHOS_ANY
	},

	{	// Outlaw
		{1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1},
		{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0},
		ALIGN_ANY,
		ETHOS_C
	},

	{	// Empire
		{1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1},
		{0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0},
		ALIGN_E,
		ETHOS_L
	}, 

	{	// Bounty
		{1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1},
		{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0},
		ALIGN_ANY,
		ETHOS_ANY
	},

	{	// Sylvan
		{1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1},
		{0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0},
		ALIGN_GN,
		ETHOS_NC
	},

	{	// Enforcer
		{1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1},
		{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
		ALIGN_ANY,
		ETHOS_L
	}
};

const struct cabal_message cabal_messages[MAX_CABAL] =
{
	// login, logout, entry message //
    { 	"", "", "" },
    { 	"%s has joined the Hunt.", 
	"%s has left from the Hunt.",
	"May the darkness conceal you." },
    { 	"The Code of Honor gleams as %s enters the Castle.",
	"Farewell %s, the crusades await your return.",
	"Greetings, brother Knight." },
    { 	"The Orb of Magic hums briefly as %s enters the lands.",
	"The crystal of power dims briefly as %s leaves the lands.",
	"Greetings, Master of Magic." },
    { 	"WAAAAAAAAAAAAAZZZZZZZZAAAAAAAAA WARRIOR OF THE VILLAGE?!?!!?!?",
	"Farewell %s. May your strength return to us soon.",
	"Welcome, great warrior." },
    { 	"The encampment of Outlaws grows as %s enters the realm.",
	"%s disbands from the outlaw encampments for a while.",
	"Greetings, chaotic one." },
    { 	"Imperial power grows as %s enters our realm.",
	"Our conquest is yet assured though %s leaves us.",
	"Greetings, citizen." },
    {   "%s has joined the watch.",
        "%s has left the watch.",
        "Hail, Hunter." },
    {   "Welcome, %s, protector of the wilderness.",
	"The Grove will remain steadfast in your absence, %s.",
	"Nature welcomes you."},
    {	"The law grows stronger with the arrival of %s.",
	"%s signs off from duty and leaves the chaotic streets.",
	"Greetings, Enforcer of the Law."
    }
};

const struct hometown_type hometown_table[MAX_HOMETOWN] =
{
	/* City Name		Recall	Pit	Align Restrict		Ethos Restrict	Race/Class Restrict */
	{"",			0,	0,	ALIGN_NONE,		ETHOS_NONE,		0	},
	{"Midgaard",		3054,	3010,	ALIGN_ANY,		ETHOS_ANY,		0	},
	{"New Thalos",		9609,	9603,	ALIGN_ANY,		ETHOS_ANY,		0	},
	{"Arkham",		768,	700,	ALIGN_E,		ETHOS_ANY,		0	},
	{"Naiadia",		20463,	20425,	ALIGN_ANY,		ETHOS_ANY,		0	},
	{"Asgard",		1213,	1200,	ALIGN_NONE,		ETHOS_NONE,		0	},

};

/* for position */
const struct position_type position_table[] =
{
    {	"dead",			"dead"	},
    {	"mortally wounded",	"mort"	},
    {	"incapacitated",	"incap"	},
    {	"stunned",		"stun"	},
    {	"sleeping",		"sleep"	},
    {	"resting",		"rest"	},
    {   "sitting",		"sit"   },
    {	"fighting",		"fight"	},
    {	"standing",		"stand"	},
    {	NULL,			NULL	}
};

/* for sex */
const struct sex_type sex_table[] =
{
   {	"none"		},
   {	"male"		},
   {	"female"	},
   {	"either"	},
   {	NULL		}
};

/* for sizes */
const struct size_type size_table[] =
{
    {	"tiny"		},
    {	"small" 	},
    {	"medium"	},
    {	"large"		},
    {	"huge", 	},
    {	"giant" 	},
    {	NULL		}
};

/* various flag tables */
const struct flag_type act_flags[] =
{
    {	"npc",			A,	FALSE	},
    {	"sentinel",		B,	TRUE	},
    {	"scavenger",		C,	TRUE	},
    {	"inner_guardian",	D,	TRUE	},
    {	"aggressive",		F,	TRUE	},
    {	"stay_area",		G,	TRUE	},
    {	"wimpy",		H,	TRUE	},
    {	"pet",			I,	TRUE	},
    {	"train",		J,	TRUE	},
    {	"practice",		K,	TRUE	},
    {   "no_track",		L,	TRUE	},
    {	"undead",		O,	TRUE	},
    {	"cleric",		Q,	TRUE	},
    {	"mage",			R,	TRUE	},
    {	"thief",		S,	TRUE	},
    {	"warrior",		T,	TRUE	},
    {	"noalign",		U,	TRUE	},
    {	"nopurge",		V,	TRUE	},
    {	"outdoors",		W,	TRUE	},
    {	"indoors",		Y,	TRUE	},
    {   "outer_guardian",	Z,	TRUE	},
    {	"healer",		aa,	TRUE	},
    {	"gain",			bb,	TRUE	},
    {	"update_always",	cc,	TRUE	},
    {	"changer",		dd,	TRUE	},
    {	NULL,			0,	FALSE	}
};

const struct flag_type plr_flags[] =
{
    {	"npc",			A,	FALSE	},
    {	"autoassist",		C,	FALSE	},
    {	"autoexit",		D,	FALSE	},
    {	"autoloot",		E,	FALSE	},
    {	"autosac",		F,	FALSE	},
    {	"autogold",		G,	FALSE	},
    {	"autosplit",		H,	FALSE	},
    {   "color",                I,      FALSE   },
    {   "betrayer",             K,      TRUE    },
    {   "heroimm",              M,      TRUE    },
    {	"holylight",		N,	FALSE	},
    {	"empowered",		O,	FALSE	},
    {	"can_loot",		P,	FALSE	},
    {	"nosummon",		Q,	FALSE	},
    {	"nofollow",		R,	FALSE	},
    {	"permit",		U,	TRUE	},
    {	"moron",		V,	FALSE	},
    {	"log",			W,	FALSE	},
    {	"deny",			X,	FALSE	},
    {	"freeze",		Y,	FALSE	},
    {	"thief",		Z,	FALSE	},
    {	"killer",		aa,	FALSE	},
    {	NULL,			0,	0	}
};

const struct flag_type affect_flags[] =
{
    {   "blind",                AFF_BLIND,      	TRUE    },
    {   "invisible",            AFF_INVISIBLE,      	TRUE    },
    {   "detect_evil",          AFF_DETECT_EVIL,      	TRUE    },
    {   "detect_invis",         AFF_DETECT_INVIS,      	TRUE    },
    {   "detect_magic",         AFF_DETECT_MAGIC,      	TRUE    },
    {   "detect_hidden",        AFF_DETECT_HIDDEN,      TRUE    },
    {   "detect_good",          AFF_DETECT_GOOD,      	TRUE    },
    {   "sanctuary",            AFF_SANCTUARY,      	TRUE    },
    {   "faerie_fire",          AFF_FAERIE_FIRE,      	TRUE    },
    {   "infrared",             AFF_INFRARED,      	TRUE    },
    {   "curse",                AFF_CURSE,      	TRUE    },
    {   "poison",               AFF_POISON,      	TRUE    },
    {   "protect_evil",         AFF_PROTECT_EVIL,      	TRUE    },
    {   "protect_good",         AFF_PROTECT_GOOD,      	TRUE    },
    {   "sneak",                AFF_SNEAK,      	TRUE    },
    {   "hide",                 AFF_HIDE,      		TRUE    },
    {   "sleep",                AFF_SLEEP,      	TRUE    },
    {   "charm",                AFF_CHARM,      	TRUE    },
    {   "flying",               AFF_FLYING,      	TRUE    },
    {   "pass_door",            AFF_PASS_DOOR,      	TRUE    },
    {   "haste",                AFF_HASTE,      	TRUE    },
    {   "calm",                 AFF_CALM,      		TRUE    },
    {   "plague",               AFF_PLAGUE,      	TRUE    },
    {   "weaken",               AFF_WEAKEN,      	TRUE    },
    {   "dark_vision",          AFF_DARK_VISION,      	TRUE    },
    {   "berserk",              AFF_BERSERK,     	TRUE    },
    {   "waterbreathing",       AFF_WATERBREATHING,	TRUE    },
    {   "regeneration",         AFF_REGENERATION,     	TRUE    },
    {   "slow",                 AFF_SLOW,     		TRUE    },
    {   "camouflage",           AFF_CAMOUFLAGE,     	TRUE    },
    {   NULL,                   0,      		0       }
};

const struct flag_type off_flags[] =
{
    {   "area_attack",		OFF_AREA_ATTACK,	TRUE    },
    {   "backstab",             OFF_BACKSTAB,      	TRUE    },
    {   "bash",                 OFF_BASH,      		TRUE    },
    {   "berserk",              OFF_BERSERK,      	TRUE    },
    {   "disarm",               OFF_DISARM,      	TRUE    },
    {   "dodge",                OFF_DODGE,      	TRUE    },
    {   "fade",                 OFF_FADE,      		TRUE    },
    {   "fast",                 OFF_FAST,      		TRUE    },
    {   "kick",                 OFF_KICK,      		TRUE    },
    {   "dirt_kick",            OFF_KICK_DIRT,      	TRUE    },
    {   "parry",                OFF_PARRY,     	 	TRUE    },
    {   "rescue",               OFF_RESCUE,      	TRUE    },
    {   "tail",                 OFF_TAIL,      		TRUE    },
    {   "trip",                 OFF_TRIP,      		TRUE    },
    {   "crush",                OFF_CRUSH,      	TRUE    },
    {   "assist_all",           ASSIST_ALL,      	TRUE    },
    {   "assist_align",         ASSIST_ALIGN,      	TRUE    },
    {   "assist_race",          ASSIST_RACE,      	TRUE    },
    {   "assist_players",       ASSIST_PLAYERS,      	TRUE    },
    {   "assist_guard",         ASSIST_GUARD,      	TRUE    },
    {   "assist_vnum",          ASSIST_VNUM,      	TRUE    },
    {	"static_tracking",	STATIC_TRACKING,	TRUE	},
    {	"spam_murder",		SPAM_MURDER,		TRUE	},
    {	"attack_evil",		OFF_ATTACK_EVIL,	TRUE	},
    {	"attack_good",		OFF_ATTACK_GOOD,	TRUE	},
    {	NULL,			0,			0	}
};

const struct flag_type imm_flags[] =
{
    {	"summon",		A,	TRUE	},
    {	"charm",		B,	TRUE	},
    {	"magic",		C,	TRUE	},
    {	"weapon",		D,	TRUE	},
    {	"bash",			E,	TRUE	},
    {	"pierce",		F,	TRUE	},
    {	"slash",		G,	TRUE	},
    {	"fire",			H,	TRUE	},
    {	"cold",			I,	TRUE	},
    {	"lightning",		J,	TRUE	},
    {	"acid",			K,	TRUE	},
    {	"poison",		L,	TRUE	},
    {	"negative",		M,	TRUE	},
    {	"holy",			N,	TRUE	},
    {	"energy",		O,	TRUE	},
    {	"mental",		P,	TRUE	},
    {	"disease",		Q,	TRUE	},
    {	"drowning",		R,	TRUE	},
    {	"light",		S,	TRUE	},
    {	"sound",		T,	TRUE	},
    {	"wood",			X,	TRUE	},
    {	"silver",		Y,	TRUE	},
    {	"iron",			Z,	TRUE	},
    {	NULL,			0,	0	}
};

const struct flag_type form_flags[] =
{
    {	"edible",		FORM_EDIBLE,		TRUE	},
    {	"poison",		FORM_POISON,		TRUE	},
    {	"magical",		FORM_MAGICAL,		TRUE	},
    {	"instant_decay",	FORM_INSTANT_DECAY,	TRUE	},
    {	"other",		FORM_OTHER,		TRUE	},
    {	"animal",		FORM_ANIMAL,		TRUE	},
    {	"sentient",		FORM_SENTIENT,		TRUE	},
    {	"undead",		FORM_UNDEAD,		TRUE	},
    {	"construct",		FORM_CONSTRUCT,		TRUE	},
    {	"mist",			FORM_MIST,		TRUE	},
    {	"intangible",		FORM_INTANGIBLE,	TRUE	},
    {	"biped",		FORM_BIPED,		TRUE	},
    {	"centaur",		FORM_CENTAUR,		TRUE	},
    {	"insect",		FORM_INSECT,		TRUE	},
    {	"spider",		FORM_SPIDER,		TRUE	},
    {	"crustacean",		FORM_CRUSTACEAN,	TRUE	},
    {	"worm",			FORM_WORM,		TRUE	},
    {	"blob",			FORM_BLOB,		TRUE	},
    {	"mammal",		FORM_MAMMAL,		TRUE	},
    {	"bird",			FORM_BIRD,		TRUE	},
    {	"reptile",		FORM_REPTILE,		TRUE	},
    {	"snake",		FORM_SNAKE,		TRUE	},
    {	"dragon",		FORM_DRAGON,		TRUE	},
    {	"amphibian",		FORM_AMPHIBIAN,		TRUE	},
    {	"fish",			FORM_FISH ,		TRUE	},
    {	"cold_blood",		FORM_COLD_BLOOD,	TRUE	},
    {	NULL,			0,			0	}
};

const struct flag_type part_flags[] =
{
    {	"head",			PART_HEAD,		TRUE	},
    {	"arms",			PART_ARMS,		TRUE	},
    {	"legs",			PART_LEGS,		TRUE	},
    {	"heart",		PART_HEART,		TRUE	},
    {	"brains",		PART_BRAINS,		TRUE	},
    {	"guts",			PART_GUTS,		TRUE	},
    {	"hands",		PART_HANDS,		TRUE	},
    {	"feet",			PART_FEET,		TRUE	},
    {	"fingers",		PART_FINGERS,		TRUE	},
    {	"ear",			PART_EAR,		TRUE	},
    {	"eye",			PART_EYE,		TRUE	},
    {	"long_tongue",		PART_LONG_TONGUE,	TRUE	},
    {	"eyestalks",		PART_EYESTALKS,		TRUE	},
    {	"tentacles",		PART_TENTACLES,		TRUE	},
    {	"fins",			PART_FINS,		TRUE	},
    {	"wings",		PART_WINGS,		TRUE	},
    {	"tail",			PART_TAIL,		TRUE	},
    {	"claws",		PART_CLAWS,		TRUE	},
    {	"fangs",		PART_FANGS,		TRUE	},
    {	"horns",		PART_HORNS,		TRUE	},
    {	"scales",		PART_SCALES,		TRUE	},
    {	"tusks",		PART_TUSKS,		TRUE	},
    {	NULL,			0,			0	}
};

const struct flag_type comm_flags[] =
{
    {	"quiet",		COMM_QUIET,		TRUE	},
    {   "deaf",			COMM_DEAF,		TRUE	},
    {   "nowiz",		COMM_NOWIZ,		TRUE	},
    {   "noauction",            COMM_NOAUCTION,         TRUE    },
    {   "noquestion",		COMM_NOQUESTION,	TRUE	},
    {   "nocabal",              COMM_NOCABAL,           TRUE    },
    {   "noquote",		COMM_NOQUOTE,		TRUE	},
    {   "shoutsoff",		COMM_SHOUTSOFF,		TRUE	},
    {   "compact",		COMM_COMPACT,		TRUE	},
    {   "brief",		COMM_BRIEF,		TRUE	},
    {   "prompt",		COMM_PROMPT,		TRUE	},
    {   "combine",		COMM_COMBINE,		TRUE	},
    {   "telnet_ga",		COMM_TELNET_GA,		TRUE	},
    {   "show_affects",		COMM_SHOW_AFFECTS,	TRUE	},
    {   "noemote",		COMM_NOEMOTE,		FALSE	},
    {   "noshout",		COMM_NOSHOUT,		FALSE	},
    {   "notell",		COMM_NOTELL,		FALSE	},
    {   "nochannels",		COMM_NOCHANNELS,	FALSE	},
    {   "snoop_proof",		COMM_SNOOP_PROOF,	FALSE	},
    {   "afk",			COMM_AFK,		TRUE	},
    {	"nosocket",		COMM_NOSOCKET,		FALSE	},
    { 	"noglobal",		COMM_NOGLOBAL,		TRUE	},
    {	"allcabal",		COMM_ALL_CABALS,	TRUE	},
    {	NULL,			0,			0	}
};

/***************************** OLC TABLES BELOW **********************************/

const struct flag_type area_flags[] =
 {
     {	"none",			AREA_NONE,		FALSE	},
     {	"changed",		AREA_CHANGED,		TRUE	},
     {	"added",		AREA_ADDED,		TRUE	},
     {	"loading",		AREA_LOADING,		FALSE	},
     {	"closed",		AREA_CLOSED,		TRUE	},
     {	NULL,			0,			0	}
 };



const struct flag_type sex_flags[] =
 {
     {	"male",			SEX_MALE,		TRUE	},
     {	"female",		SEX_FEMALE,		TRUE	},
     {	"neutral",		SEX_NEUTRAL,		TRUE	},
     {   "random",               3,                      TRUE    },   /* ROM */
     {	"none",			SEX_NEUTRAL,		TRUE	},
     {	NULL,			0,			0	}
 };

const struct flag_type direction_table [] =
{
	{"north",	DIR_NORTH,	TRUE },
	{"east",	DIR_EAST,	TRUE },
	{"south",  	DIR_SOUTH, 	TRUE },
	{"west",	DIR_WEST,	TRUE },
	{"up",		DIR_UP,		TRUE },
	{"down",	DIR_DOWN,	TRUE },
	{NULL,		0,			TRUE },
};

const struct flag_type exit_flags[] =
 {
    {   "door",			EX_ISDOOR,		TRUE    },
    {	"closed",		EX_CLOSED,		TRUE	},
    {	"locked",		EX_LOCKED,		TRUE	},
    {	"pickproof",		EX_PICKPROOF,		TRUE	},
    {   "nopass",		EX_NOPASS,		TRUE	},
    {   "easy",			EX_EASY,		TRUE	},
    {   "hard",			EX_HARD,		TRUE	},
    {	"infuriating",		EX_INFURIATING,		TRUE	},
    {	"noclose",		EX_NOCLOSE,		TRUE	},
    {	"nolock",		EX_NOLOCK,		TRUE	},
    {	"nobash",		EX_NOBASH,		TRUE	},
    {	"nonobvious",		EX_NONOBVIOUS,		TRUE	},
    {	"current",		EX_CURRENT,		TRUE	},
    {	NULL,			0,			0	}
 };



const struct flag_type door_resets[] =
 {
     {	"open and unlocked",	0,		TRUE	},
     {	"closed and unlocked",	1,		TRUE	},
     {	"closed and locked",	2,		TRUE	},
     {	NULL,			0,		0	}
 };



const struct flag_type room_flags[] =
 {
     {	"dark",			ROOM_DARK,		TRUE	},
     {	"no_mob",		ROOM_NO_MOB,		TRUE	},
     {	"indoors",		ROOM_INDOORS,		TRUE	},
     {	"private",		ROOM_PRIVATE,		TRUE    },
     {	"safe",			ROOM_SAFE,		TRUE	},
     {	"solitary",		ROOM_SOLITARY,		TRUE	},
     {	"pet_shop",		ROOM_PET_SHOP,		TRUE	},
     {	"no_recall",		ROOM_NO_RECALL,		TRUE	},
     {  "no_summon",		ROOM_NO_SUMMON,		TRUE	},
     {	"imp_only",		ROOM_IMP_ONLY,		TRUE    },
     {	"gods_only",	        ROOM_GODS_ONLY,		TRUE    },
     {	"heroes_only",		ROOM_HEROES_ONLY,	TRUE	},
     {	"newbie_only",		ROOM_NEWBIES_ONLY,	TRUE	},
     {	"law",			ROOM_LAW,		TRUE	},
     {  "no_where",		ROOM_NOWHERE,		TRUE	},
     {  "no_gate",		ROOM_NO_GATE,		TRUE	},
     {  "no_consecrate",	ROOM_NO_CONSECRATE,	TRUE	},
     {  "low_only",		ROOM_LOW_ONLY,		TRUE	},
     {  "no_magic",		ROOM_NO_MAGIC,		TRUE	},
     {  "consecrated",		ROOM_CONSECRATED,	TRUE 	}, 
    {	"no_newbie",		ROOM_NO_NEWBIE,		TRUE	},
     {	NULL,			0,			0	}
 };



const struct flag_type sector_flags[] =
 {
    {	"inside",	SECT_INSIDE,		TRUE	},
    {	"city",		SECT_CITY,		TRUE	},
    {	"field",	SECT_FIELD,		TRUE	},
    {	"forest",	SECT_FOREST,		TRUE	},
    {	"hills",	SECT_HILLS,		TRUE	},
    {	"mountain",	SECT_MOUNTAIN,		TRUE	},
    {	"swim",		SECT_WATER_SWIM,	TRUE	},
    {	"noswim",	SECT_WATER_NOSWIM,	TRUE	},
    {  	"unused",	SECT_UNUSED,		TRUE	},
    {	"air",		SECT_AIR,		TRUE	},
    {	"desert",	SECT_DESERT,		TRUE	},
    {	"road",		SECT_ROAD,		TRUE	},
    {	"underwater",	SECT_UNDERWATER,	TRUE	},
    {	NULL,		0,			0	}
 };



const struct flag_type type_flags[] =
 {
     {	"light",		ITEM_LIGHT,		TRUE	},
     {	"scroll",		ITEM_SCROLL,		TRUE	},
     {	"wand",			ITEM_WAND,		TRUE	},
     {	"staff",		ITEM_STAFF,		TRUE	},
     {	"weapon",		ITEM_WEAPON,		TRUE	},
     {	"treasure",		ITEM_TREASURE,		TRUE	},
     {	"armor",		ITEM_ARMOR,		TRUE	},
     {	"potion",		ITEM_POTION,		TRUE	},
     {	"furniture",		ITEM_FURNITURE,		TRUE	},
     {	"trash",		ITEM_TRASH,		TRUE	},
     {	"container",		ITEM_CONTAINER,		TRUE	},
     {	"drinkcontainer",	ITEM_DRINK_CON,		TRUE	},
     {	"key",			ITEM_KEY,		TRUE	},
     {	"food",			ITEM_FOOD,		TRUE	},
     {	"money",		ITEM_MONEY,		TRUE	},
     {	"boat",			ITEM_BOAT,		TRUE	},
     {	"npccorpse",		ITEM_CORPSE_NPC,	TRUE	},
     {	"pc corpse",		ITEM_CORPSE_PC,		FALSE	},
     {	"fountain",		ITEM_FOUNTAIN,		TRUE	},
     {	"pill",			ITEM_PILL,		TRUE	},
     {	"protect",		ITEM_PROTECT,		TRUE	},
     {	"map",			ITEM_MAP,		TRUE	},
     {   "portal",		ITEM_PORTAL,		TRUE	},
     {   "warpstone",		ITEM_WARP_STONE,	TRUE	},
     {	"roomkey",		ITEM_ROOM_KEY,		TRUE	},
     { 	"gem",			ITEM_GEM,		TRUE	},
     {	"jewelry",		ITEM_JEWELRY,		TRUE	},
     {	"jukebox",		ITEM_JUKEBOX,		TRUE	},
     { "instrument",		ITEM_INSTRUMENT,	TRUE	},
     {	NULL,			0,			0	}
 };


const struct flag_type extra_flags[] =
 {
     {	"glow",			ITEM_GLOW,		TRUE	},
     {	"hum",			ITEM_HUM,		TRUE	},
     {	"dark",			ITEM_DARK,		TRUE	},
     {	"lock",			ITEM_LOCK,		TRUE	},
     {	"evil",			ITEM_EVIL,		TRUE	},
     {	"invis",		ITEM_INVIS,		TRUE	},
     {	"magic",		ITEM_MAGIC,		TRUE	},
     {	"nodrop",		ITEM_NODROP,		TRUE	},
     {	"bless",		ITEM_BLESS,		TRUE	},
     {	"antigood",		ITEM_ANTI_GOOD,		TRUE	},
     {	"antievil",		ITEM_ANTI_EVIL,		TRUE	},
     {	"antineutral",		ITEM_ANTI_NEUTRAL,	TRUE	},
     {	"noremove",		ITEM_NOREMOVE,		TRUE	},
     {	"inventory",		ITEM_INVENTORY,		TRUE	},
     {	"nopurge",		ITEM_NOPURGE,		TRUE	},
     {	"rotdeath",		ITEM_ROT_DEATH,		TRUE	},
     {	"visdeath",		ITEM_VIS_DEATH,		TRUE	},
     {	"meltdrop",		ITEM_MELT_DROP,		TRUE	},
     {	"hadtimer",		ITEM_HAD_TIMER,		TRUE	},
     {	"sellextract",		ITEM_SELL_EXTRACT,	TRUE	},
     {	"burnproof",		ITEM_BURN_PROOF,	TRUE	},
     {	"nouncurse",		ITEM_NOUNCURSE,		TRUE	},
     {  "metal",            	ITEM_METAL,	        TRUE    },
     {  "nolocate",		ITEM_NOLOCATE,		TRUE    },
     {  "nodisarm",		ITEM_NODISARM,		TRUE	},
     {  "corpsenoanim",		CORPSE_NO_ANIMATE,	TRUE	},
     {  "hidden",		ITEM_HIDDEN,		TRUE	},
     {  "antineutraleth",	ITEM_ANTI_NEUT,		TRUE	},
     {  "antichaotic",		ITEM_ANTI_CHAOTIC,	TRUE	},
     {	"maledicted",		ITEM_MALEDICTED,	TRUE	},
     {	"fixed",		ITEM_FIXED,		TRUE	},
     {	NULL,			0,			0	}
 };

const struct flag_type restrict_flags[] =
{
	{ "human_only",		HUMAN_ONLY,		TRUE	},
    	{ "dwarf_only",		DWARF_ONLY,		TRUE	},
    	{ "elf_only",		ELF_ONLY,		TRUE	},
    	{ "drow_only",		DARK_ONLY,		TRUE	},
    	{ "giant_only",		GIANT_ONLY,		TRUE	},
	{ "centuar_only",	CENTAUR_ONLY,		TRUE	},
	{ "troll_only",		TROLL_ONLY,		TRUE	},
	{ "draconian_only",	DRACONIAN_ONLY,		TRUE	},
	{ "gnome_only",		GNOME_ONLY,		TRUE	},
	{ "warrior_only",	WARRIOR_ONLY,		TRUE	},
	{ "thief_only",		THIEF_ONLY,		TRUE	},
	{ "zealot_only",	ZEALOT_ONLY,		TRUE	},
	{ "AP_only",		ANTI_PALADIN_ONLY,	TRUE	},
	{ "bard_only",		BARD_ONLY,		TRUE	},
	{ "ranger_only",	RANGER_ONLY,		TRUE	},
	{ "channeler_only",	CHANNELER_ONLY,		TRUE	},
	{ "assassin_only",	ASSASSIN_ONLY,		TRUE	},
	{ "necromancer_only",	NECROMANCER_ONLY,	TRUE	},
	{ "elementalist_only",	ELEMENTALIST_ONLY,	TRUE	},
	{ "healer_only",	HEALER_ONLY,		TRUE	},
	{ "rager_only",		RAGER_ONLY,		TRUE	},
	{ "ancient_only",	ANCIENT_ONLY,		TRUE	},
	{ "sylvan_only",	SYLVAN_ONLY,		TRUE    },
	{ "mage_only",		MAGE_ONLY,		TRUE	},
	{ "arcana_only",	ARCANA_ONLY,		TRUE	},
	{ "knight_only",	KNIGHT_ONLY,		TRUE	},
	{ "outlaw_only",	OUTLAW_ONLY,		TRUE	},
	{ "bounty_only",	BOUNTY_ONLY,		TRUE	},
	{ "newbie_only",	NEWBIE_ONLY,		TRUE	},
      	{ "paladin_only",	PALADIN_ONLY,		TRUE	},
	{ NULL,			0,			0	}
};

const struct flag_type wear_flags[] =
{
     {	"take",			ITEM_TAKE,		TRUE	},
     {	"finger",		ITEM_WEAR_FINGER,	TRUE	},
     {	"neck",			ITEM_WEAR_NECK,		TRUE	},
     {	"body",			ITEM_WEAR_BODY,		TRUE	},
     {	"head",			ITEM_WEAR_HEAD,		TRUE	},
     {	"legs",			ITEM_WEAR_LEGS,		TRUE	},
     {	"feet",			ITEM_WEAR_FEET,		TRUE	},
     {	"hands",		ITEM_WEAR_HANDS,	TRUE	},
     {	"arms",			ITEM_WEAR_ARMS,		TRUE	},
     {	"shield",		ITEM_WEAR_SHIELD,	TRUE	},
     {	"about",		ITEM_WEAR_ABOUT,	TRUE	},
     {	"waist",		ITEM_WEAR_WAIST,	TRUE	},
     {	"wrist",		ITEM_WEAR_WRIST,	TRUE	},
     {	"wield",		ITEM_WIELD,		TRUE	},
     {	"hold",			ITEM_HOLD,		TRUE	},
     {  "nosac",		ITEM_NO_SAC,		TRUE	},
     {  "brand",		ITEM_WEAR_BRAND,	TRUE	},
     {  "strap",		ITEM_WEAR_STRAPPED,	TRUE    },
     {	NULL,			0,			0	}
};

 /*
  * Used when adding an affect to tell where it goes.
  * See addaffect and delaffect in act_olc.c
  */
 const struct flag_type apply_flags[] =
 {
     {	"none",			APPLY_NONE,		TRUE	},
     {	"strength",		APPLY_STR,		TRUE	},
     {	"dexterity",		APPLY_DEX,		TRUE	},
     {	"intelligence",		APPLY_INT,		TRUE	},
     {	"wisdom",		APPLY_WIS,		TRUE	},
     {	"constitution",		APPLY_CON,		TRUE	},
     {	"sex",			APPLY_SEX,		TRUE	},
     {	"class",		APPLY_CLASS,		TRUE	},
     {	"level",		APPLY_LEVEL,		TRUE	},
     {	"age",			APPLY_AGE,		TRUE	},
     {	"height",		APPLY_HEIGHT,		TRUE	},
     {	"weight",		APPLY_WEIGHT,		TRUE	},
     {	"mana",			APPLY_MANA,		TRUE	},
     {	"hp",			APPLY_HIT,		TRUE	},
     {	"move",			APPLY_MOVE,		TRUE	},
     {	"gold",			APPLY_GOLD,		TRUE	},
     {	"experience",		APPLY_EXP,		TRUE	},
     {	"ac",			APPLY_AC,		TRUE	},
     {	"hitroll",		APPLY_HITROLL,		TRUE	},
     {	"damroll",		APPLY_DAMROLL,		TRUE	},
     {	"saves",		APPLY_SAVES,		TRUE	},
     {	"savingpara",		APPLY_SAVING_PARA,	TRUE	},
     {	"savingrod",		APPLY_SAVING_ROD,	TRUE	},
     {	"savingpetri",		APPLY_SAVING_PETRI,	TRUE	},
     {	"savingbreath",		APPLY_SAVING_BREATH,	TRUE	},
     {	"savingspell",		APPLY_SAVING_SPELL,	TRUE	},
     {	"spellaffect",		APPLY_SPELL_AFFECT,	FALSE	},
     {	"dam_mod",		APPLY_DAM_MOD,		TRUE	},
     {  "attack_mod",		APPLY_ATTACK_MOD,	TRUE	},
     {  "enhancedDamMod",	APPLY_ENHANCED_MOD,	TRUE	},
	 {  "regen",		APPLY_REGENERATION,  TRUE    },
     {	"size",			APPLY_SIZE,		TRUE	},
     {	NULL,			0,			0	}
 };



 /*
  * What is seen.
  */
const struct flag_type wear_loc_strings[] =
 {
     {	"in the inventory",	WEAR_NONE,		TRUE	},
     {	"as a light",		WEAR_LIGHT,		TRUE	},
     {	"on the left finger",	WEAR_FINGER_L,		TRUE	},
     {	"on the right finger",	WEAR_FINGER_R,		TRUE	},
     {	"around the neck (1)",	WEAR_NECK_1,		TRUE	},
     {	"around the neck (2)",	WEAR_NECK_2,		TRUE	},
     {	"on the body",		WEAR_BODY,		TRUE	},
     {	"over the head",	WEAR_HEAD,		TRUE	},
     {	"on the legs",		WEAR_LEGS,		TRUE	},
     {	"on the feet",		WEAR_FEET,		TRUE	},
     {	"on the hands",		WEAR_HANDS,		TRUE	},
     {	"on the arms",		WEAR_ARMS,		TRUE	},
     {	"as a shield",		WEAR_SHIELD,		TRUE	},
     {	"about the shoulders",	WEAR_ABOUT,		TRUE	},
     {	"around the waist",	WEAR_WAIST,		TRUE	},
     {	"on the left wrist",	WEAR_WRIST_L,		TRUE	},
     {	"on the right wrist",	WEAR_WRIST_R,		TRUE	},
     {	"wielded",		WEAR_WIELD,		TRUE	},
     {	"held in the hands",	WEAR_HOLD,		TRUE	},
     {  "dual wielded",		WEAR_DUAL_WIELD,	TRUE    },
     {	NULL,			0	      , 	0	}
 };


const struct flag_type wear_loc_flags[] =
 {
     {	"none",		WEAR_NONE,		TRUE	},
     {	"light",	WEAR_LIGHT,		TRUE	},
     {	"lfinger",	WEAR_FINGER_L,		TRUE	},
     {	"rfinger",	WEAR_FINGER_R,		TRUE	},
     {	"neck1",	WEAR_NECK_1,		TRUE	},
     {	"neck2",	WEAR_NECK_2,		TRUE	},
     {	"body",		WEAR_BODY,		TRUE	},
     {	"head",		WEAR_HEAD,		TRUE	},
     {	"legs",		WEAR_LEGS,		TRUE	},
     {	"feet",		WEAR_FEET,		TRUE	},
     {	"hands",	WEAR_HANDS,		TRUE	},
     {	"arms",		WEAR_ARMS,		TRUE	},
     {	"shield",	WEAR_SHIELD,		TRUE	},
     {	"about",	WEAR_ABOUT,		TRUE	},
     {	"waist",	WEAR_WAIST,		TRUE	},
     {	"lwrist",	WEAR_WRIST_L,		TRUE	},
     {	"rwrist",	WEAR_WRIST_R,		TRUE	},
     {	"wielded",	WEAR_WIELD,		TRUE	},
     {	"hold",		WEAR_HOLD,		TRUE	},
     {	"dualwielded",	WEAR_DUAL_WIELD,	TRUE	},
     {	NULL,		0,		0	}
 };

const struct flag_type container_flags[] =
 {
     {	"closeable",		1,		TRUE	},
     {	"pickproof",		2,		TRUE	},
     {	"closed",		4,		TRUE	},
     {	"locked",		8,		TRUE	},
     {	"puton",		16,		TRUE	},
     {	NULL,			0,		0	}
 };

 /*****************************************************************************
                       ROM - specific tables:
  ****************************************************************************/




const struct flag_type ac_type[] =
 {
     {   "pierce",        AC_PIERCE,            TRUE    },
     {   "bash",          AC_BASH,              TRUE    },
     {   "slash",         AC_SLASH,             TRUE    },
     {   "exotic",        AC_EXOTIC,            TRUE    },
     {   NULL,              0,                    0       }
 };


const struct flag_type size_flags[] =
 {
     {   "tiny",          SIZE_TINY,            TRUE    },
     {   "small",         SIZE_SMALL,           TRUE    },
     {   "medium",        SIZE_MEDIUM,          TRUE    },
     {   "large",         SIZE_LARGE,           TRUE    },
     {   "huge",          SIZE_HUGE,            TRUE    },
     {   "giant",         SIZE_GIANT,           TRUE    },
     {   NULL,              0,                    0       },
 };


const struct flag_type weapon_class[] =
 {
     {   "exotic",	WEAPON_EXOTIC,		TRUE    },
     {   "sword",	WEAPON_SWORD,		TRUE    },
     {   "dagger",	WEAPON_DAGGER,		TRUE    },
     {   "spear",	WEAPON_SPEAR,		TRUE    },
     {   "mace",	WEAPON_MACE,		TRUE    },
     {   "axe",		WEAPON_AXE,		TRUE    },
     {   "flail",	WEAPON_FLAIL,		TRUE    },
     {   "whip",	WEAPON_WHIP,		TRUE    },
     {   "polearm",	WEAPON_POLEARM,		TRUE    },
     {	 "staff",	WEAPON_STAFF,		TRUE	},
     {   NULL,		0,			0       }
 };


const struct flag_type weapon_type2[] =
 {
     {   "flaming",       WEAPON_FLAMING,       TRUE    },
     {   "frost",         WEAPON_FROST,         TRUE    },
     {   "vampiric",      WEAPON_VAMPIRIC,      TRUE    },
     {   "sharp",         WEAPON_SHARP,         TRUE    },
     {   "vorpal",        WEAPON_VORPAL,        TRUE    },
     {   "twohands",     WEAPON_TWO_HANDS,     TRUE     },
     {	"shocking",	 WEAPON_SHOCKING,      TRUE     },
     {	"poison",	WEAPON_POISON,		TRUE	},
     {	"leader",	WEAPON_LEADER,		TRUE	},
     {   NULL,              0,                    0       }
 };

const struct flag_type res_flags[] =
 {
     {	"summon",	 RES_SUMMON,		TRUE	},
     {   "charm",         RES_CHARM,            TRUE    },
     {   "magic",         RES_MAGIC,            TRUE    },
     {   "weapon",        RES_WEAPON,           TRUE    },
     {   "bash",          RES_BASH,             TRUE    },
     {   "pierce",        RES_PIERCE,           TRUE    },
     {   "slash",         RES_SLASH,            TRUE    },
     {   "fire",          RES_FIRE,             TRUE    },
     {   "cold",          RES_COLD,             TRUE    },
     {   "lightning",     RES_LIGHTNING,        TRUE    },
     {   "acid",          RES_ACID,             TRUE    },
     {   "poison",        RES_POISON,           TRUE    },
     {   "negative",      RES_NEGATIVE,         TRUE    },
     {   "holy",          RES_HOLY,             TRUE    },
     {   "energy",        RES_ENERGY,           TRUE    },
     {   "mental",        RES_MENTAL,           TRUE    },
     {   "disease",       RES_DISEASE,          TRUE    },
     {   "drowning",      RES_DROWNING,         TRUE    },
     {   "light",         RES_LIGHT,            TRUE    },
     {	"sound",	RES_SOUND,		TRUE	},
     {	"wood",		RES_WOOD,		TRUE	},
     {	"silver",	RES_SILVER,		TRUE	},
     {	"iron",		RES_IRON,		TRUE	},
     {   NULL,          0,            0    }
 };


const struct flag_type vuln_flags[] =
 {
     {	"summon",	 VULN_SUMMON,		TRUE	},
     {	"charm",	VULN_CHARM,		TRUE	},
     {   "magic",         VULN_MAGIC,           TRUE    },
     {   "weapon",        VULN_WEAPON,          TRUE    },
     {   "bash",          VULN_BASH,            TRUE    },
     {   "pierce",        VULN_PIERCE,          TRUE    },
     {   "slash",         VULN_SLASH,           TRUE    },
     {   "fire",          VULN_FIRE,            TRUE    },
     {   "cold",          VULN_COLD,            TRUE    },
     {   "lightning",     VULN_LIGHTNING,       TRUE    },
     {   "acid",          VULN_ACID,            TRUE    },
     {   "poison",        VULN_POISON,          TRUE    },
     {   "negative",      VULN_NEGATIVE,        TRUE    },
     {   "holy",          VULN_HOLY,            TRUE    },
     {   "energy",        VULN_ENERGY,          TRUE    },
     {   "mental",        VULN_MENTAL,          TRUE    },
     {   "disease",       VULN_DISEASE,         TRUE    },
     {   "drowning",      VULN_DROWNING,        TRUE    },
     {   "light",         VULN_LIGHT,           TRUE    },
     {	"sound",	 VULN_SOUND,		TRUE	},
     {   "wood",          VULN_WOOD,            TRUE    },
     {   "silver",        VULN_SILVER,          TRUE    },
     {   "iron",          VULN_IRON,            TRUE    },
     {   NULL,              0,                    0       }
 };

 const struct flag_type position_flags[] =
 {
     {   "dead",           POS_DEAD,            FALSE   },
     {   "mortal",         POS_MORTAL,          FALSE   },
     {   "incap",          POS_INCAP,           FALSE   },
     {   "stunned",        POS_STUNNED,         FALSE   },
     {   "sleeping",       POS_SLEEPING,        TRUE    },
     {   "resting",        POS_RESTING,         TRUE    },
     {   "sitting",        POS_SITTING,         TRUE    },
     {   "fighting",       POS_FIGHTING,        FALSE   },
     {   "standing",       POS_STANDING,        TRUE    },
     {   NULL,              0,                    0       }
 };

const struct flag_type portal_flags[] =
{
     {   "normal_exit",	  GATE_NORMAL_EXIT,	TRUE	},
     {	"no_curse",	  GATE_NOCURSE,		TRUE	},
     {   "go_with",	  GATE_GOWITH,		TRUE	},
     {   "buggy",	  GATE_BUGGY,		TRUE	},
     {	"random",	  GATE_RANDOM,		TRUE	},
     {   NULL,		  0,			0	}
 };

const struct flag_type furniture_flags[] =
{
     {   "stand_at",	  STAND_AT,		TRUE	},
     {	"stand_on",	  STAND_ON,		TRUE	},
     {	"stand_in",	  STAND_IN,		TRUE	},
     {	"sit_at",	  SIT_AT,		TRUE	},
     {	"sit_on",	  SIT_ON,		TRUE	},
     {	"sit_in",	  SIT_IN,		TRUE	},
     {	"rest_at",	  REST_AT,		TRUE	},
     {	"rest_on",	  REST_ON,		TRUE	},
     {	"rest_in",	  REST_IN,		TRUE	},
     {	"sleep_at",	  SLEEP_AT,		TRUE	},
     {	"sleep_on",	  SLEEP_ON,		TRUE	},
     {	"sleep_in",	  SLEEP_IN,		TRUE	},
     {	"put_at",	  PUT_AT,		TRUE	},
     {	"put_on",	  PUT_ON,		TRUE	},
     {	"put_in",	  PUT_IN,		TRUE	},
     {	"put_inside",	  PUT_INSIDE,		TRUE	},
     {	NULL,		  0,			0	}
 };

const struct flag_type     apply_types [] =
{
        {	"affects",	TO_AFFECTS,	TRUE	},
 	{	"object",	TO_OBJECT,	TRUE	},
 	{	"immune",	TO_IMMUNE,	TRUE	},
 	{	"resist",	TO_RESIST,	TRUE	},
 	{	"vuln",		TO_VULN,	TRUE	},
 	{	"weapon",	TO_WEAPON,	TRUE	},
 	{	NULL,		0,		TRUE	}
};

const struct bit_type bitvector_type [] =
{
    	{    	affect_flags,  	"affect"        },
 	{	apply_flags,	"apply"		},
 	{	imm_flags,	"imm"		},
 	{	res_flags,	"res"		},
 	{	vuln_flags,	"vuln"		},
 	{	weapon_type2,	"weapon"	}
};

const struct empire_type empire_table[MAX_EMPIRE] =
{
    /*  name,		who entry  */
    {   "anathema",	"[ANATHEMA] "	},
    {   "nonempire",	""	},
    {   "prebloodoath",	""	},
    {   "bloodoath",	"[BLOODOATH] "	},
    {   "citizen",	"[CITIZEN] "	},
    {   "leader",	"[LEADER] "	},
    {   "emperor",	"[EMPEROR] "	},
    {   "immortal",	""		}

};

const struct color_type color_table[MAX_COLORS] =
{
	/* Color name	Associated Ascii Value */
	{"uncolored",	"\x01B[0m" 		},
	{"red",			"\x01B[0;31m" 	},
    {"green",		"\x01B[0;32m" 	},
    {"yellow",		"\x01B[0;33m" 	},
	{"blue",		"\x01B[0;34m" 	},
	{"magenta",		"\x01B[0;35m" 	},
	{"cyan",		"\x01B[0;36m" 	},
	{"lightgrey",	"\x01B[0;37m" 	},
	{"darkgrey",	"\x01B[1;30m" 	},
	{"lightred",	"\x01B[1;31m" 	},
	{"lightgreen",	"\x01B[1;32m" 	},
	{"lightyellow",	"\x01B[1;33m" 	},
	{"lightblue",	"\x01B[1;34m" 	},
	{"lightmagenta","\x01B[1;35m" 	},
	{"lightcyan",	"\x01B[1;36m" 	},
	{"white",		"\x01B[1;37m" 	},
};
const struct color_event_type color_event[MAX_EVENTS] =
{
	/* Event Name		Default Color   Minimum Level */
        {"prompt",		"uncolored",	1  },
		{"channels",	"darkgrey",		1  },
		{"tells",		"lightgreen",	1  },
		{"grouptells",	"magenta",		1  },
		{"speech",		"lightyellow",	1  },
		{"damage",		"lightred",	1  },
		{"yells",		"lightcyan",	1  },
		{"immtalk",		"lightblue",	52 },
		{"wiznet",		"uncolored",	52 },
		{"prays",		"lightred",	53 },
};

const struct flag_type extended_flags[] =
{
    {	"cheap_shot",		OFF_CHEAPSHOT,		TRUE	},
    {	"parting_blow",		OFF_PARTING_BLOW,	TRUE	},
    {	"assassin",		OFF_ASSASSIN,		TRUE	},
    {	"sword_spec",		OFF_SWORD_SPEC,		TRUE	},
    {	"axe_spec",		OFF_AXE_SPEC,		TRUE	},
    {	"hth_spec",		OFF_HTH_SPEC,		TRUE	},
    {	"dagger_spec",		OFF_DAGGER_SPEC,	TRUE	},
    {	"spear_spec",		OFF_SPEAR_SPEC,		TRUE	},
    {	"mace_spec",		OFF_MACE_SPEC,		TRUE	},
    {	"whip_spec",		OFF_WHIP_SPEC,		TRUE	},
    {	"polearm_spec",		OFF_POLEARM_SPEC,	TRUE	},
    {	NULL,			0,			FALSE	}
};

/* New Affect Types */
const struct flag_type aftype_table[] =
{
    {   "AFT_SPELL",    AFT_SPELL,              TRUE    },
    {   "AFT_SKILL",    AFT_SKILL,              TRUE    },
    {   "AFT_POWER",    AFT_POWER,              TRUE    },
    {   "AFT_MALADY",   AFT_MALADY,             TRUE    },
    {   "AFT_COMMUNE",  AFT_COMMUNE,    	TRUE    },
    {   "AFT_INVIS",    AFT_INVIS,              TRUE    },
    {	NULL,		0,			FALSE	},
};

const struct display_type apply_locations[] =
{
    {   "none",			APPLY_NONE,			"none"			},
    {	"str",			APPLY_STR,     		"strength"			},
    {	"dex",   		APPLY_DEX,     		"dexterity"			},
    { 	"int",	 		APPLY_INT,    	 	"intelligence"			},
    {   "wis",   		APPLY_WIS,     		"wisdom"			},
    {   "con",   		APPLY_CON,     		"constitution"			},
    {	"sex",   		APPLY_SEX,     		"sex"				},
    {	"class", 		APPLY_CLASS,   		"class"				},
    {   "age",  	 	APPLY_AGE,     		"age"				},
    {   "height",		APPLY_HEIGHT,     	"none"				},
    {   "weight",		APPLY_WEIGHT,     	"none"				},
    {   "mana",  		APPLY_MANA,     	"mana"				},
    {   "hp",			APPLY_HIT,     		"health"			},
    {   "move",  		APPLY_MOVE,     	"moves"				},
    {   "gold",	 		APPLY_GOLD,     	"none"				},
    {   "exp",	 		APPLY_EXP,     		"none"				},
    {	"ac",			APPLY_AC,     		"armor class"			},
    {   "hitroll",		APPLY_HITROLL,   	"hitroll"  			},
    {	"damroll",		APPLY_DAMROLL,      "damroll"				},
    {	"saves",		APPLY_SAVES,        "saves"				},
    {	"spara",		APPLY_SAVING_PARA,  "save vs paralysis"			},
    {	"srod",			APPLY_SAVING_ROD,   "save vs rod"			},
    {	"spetri",		APPLY_SAVING_PETRI, "save vs petrification"		},
    {	"sbreath",		APPLY_SAVING_BREATH,"save vs breath"			},
    {   "svspell",		APPLY_SAVING_SPELL, "save vs spell" 			},
    {	"affect",		APPLY_SPELL_AFFECT, "none"				},
    {	"regen",		APPLY_REGENERATION, "regeneration"  			},
    {	"dam_mod",		APPLY_DAM_MOD,		"% damage received" 		},
    {	"enhancedDamMod",	APPLY_ENHANCED_MOD,	"% damage dealt" 		},
    {   "attack_mod",		APPLY_ATTACK_MOD,	"number of attacks"		},
    {	"size",			APPLY_SIZE,		"size"				},
    {   NULL,			0,					FALSE		},
};

const struct flag_type area_type_table[] =
{
	{"normal",		ARE_NORMAL,		TRUE },
	{"cabal",		ARE_CABAL,		TRUE },
	{"quest",		ARE_QUEST,		TRUE },
	{"city",		ARE_CITY,		TRUE },
	{"unopened",		ARE_UNOPENED,		TRUE },
	{NULL,			0,			TRUE },
};

const struct bounty_type bounty_table[MAX_BOUNTY] =
{
    /* rank name,	extitle,		credits required */
    {   "neophyte",	"Neophyte Hunter", 		0	},
    {   "hunter", 	"Veteran Hunter", 		200	},
    {   "master",	"Master Hunter",		500	},
    {	"sensei",	"Elder Sensei of the Hunters",	1000	},
};

const struct quest_reward quest_reward_table[MAX_QUEST_REWARDS] =
{
    /*  keyword,		price,		type
	description,
	classes,
	races,
	aligns, ethos,
	function that performs the reward

    Class array layout (listed in groups of 5):
		{ warrior, thief, zealot, paladin, anti-paladin,
		  ranger, druid, channeler, assassin, necromancer,
		  elementalist, bard, healer }

    Race array layout (listed in groups of 5):
		{ human, dwarf, elf, svirfnebli, dark-elf,
       		  centaur, troll, cloud, gnome, draconian,
		  ethereal, changeling, arial, fire, duergar,
		  storm, lich, angel, wood-elf, illithid, 
		  vuuhu, ruugrah, malefisti } */

    //ARMOR
    {   "warrior set boots",		2500,	REWARD_ARMOR, SET_ITEM, SET_WARRIOR,
	OBJ_VNUM_QUEST_STORE_WARRIOR_BOOTS,
	"Boots fashioned for the strongest of warriors. Grant the March skill.",		
	{1,0,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_warrior_boots	},
	
    {   "warrior set gauntlets",		2500,	REWARD_ARMOR, SET_ITEM, SET_WARRIOR, 
	OBJ_VNUM_QUEST_STORE_WARRIOR_GAUNTLETS,
	"Gloves fashioned for the strongest of warriors.",		
	{1,0,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_warrior_gauntlets	},

    {   "warrior set plate",		2500,	REWARD_ARMOR, SET_ITEM, SET_WARRIOR,
	OBJ_VNUM_QUEST_STORE_WARRIOR_PLATE,
	"Platemail fashioned for the strongest of warriors.",		
	{1,0,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_warrior_plate	},

    {   "channeler set helm",		2500,	REWARD_ARMOR, SET_ITEM, SET_CHANNELER,
	OBJ_VNUM_QUEST_STORE_CHANNELER_HELM,
	"A crest designed to allow clearer and more focused thought. Grants the Mana\nConduit skill.",		
	{0,0,0,0,0,0,0,1,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_channeler_helm	},

    {   "channeler set necklace",		2500,	REWARD_ARMOR, SET_ITEM, SET_CHANNELER,
	OBJ_VNUM_QUEST_STORE_CHANNELER_NECK,
	"A necklace of magical beads. Grants the Mana Disruption spell.",		
	{0,0,0,0,0,0,0,1,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_channeler_neck	},

    {   "channeler set robe",		2500,	REWARD_ARMOR, SET_ITEM, SET_CHANNELER,
	OBJ_VNUM_QUEST_STORE_CHANNELER_ROBE,
	"A robe sewn of ethereal fibers. Grants the Mental Clarity skill.",		
	{0,0,0,0,0,0,0,1,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_channeler_robe	},

    {   "channeler set ankh",		2500,	REWARD_ARMOR, SET_ITEM, SET_CHANNELER,
	OBJ_VNUM_QUEST_STORE_CHANNELER_ANKH,
	"A magical artifact from an ethereal realm. Can be invoked for a Displacement\neffect.",		
	{0,0,0,0,0,0,0,1,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_channeler_ankh	},

    {   "thief set belt",		2500,	REWARD_ARMOR, SET_ITEM, SET_THIEF,
	OBJ_VNUM_QUEST_STORE_THIEF_BELT,
	"An ethereal belt of pouches. Grants the Plant Explosives skill.",		
	{0,1,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_thief_belt	},

    {   "thief set boots",		2500,	REWARD_ARMOR, SET_ITEM, SET_THIEF,
	OBJ_VNUM_QUEST_STORE_THIEF_BOOTS,
	"A pair of lightweight blackened boots. Grant the Advanced Tripwire skill.",		
	{0,1,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_thief_boots	},

    {   "thief set robe",		2500,	REWARD_ARMOR, SET_ITEM, SET_THIEF,
	OBJ_VNUM_QUEST_STORE_THIEF_ROBE,
	"A concealing robe forged from the essence of shadows. Grants the Shadowstep skill.",		
	{0,1,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_thief_robe	},
	
	{   "healer set ring",		2500,	REWARD_ARMOR, SET_ITEM, SET_HEALER,
	OBJ_VNUM_QUEST_STORE_HEALER_RING,
	"A holy ring crafted from translucent gold. Grants the Resurrect spell.",		
	{0,0,0,0,0,0,0,0,0,0,0,0,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_healer_ring	},
	
	{   "healer set sleeves",		2500,	REWARD_ARMOR, SET_ITEM, SET_HEALER,
	OBJ_VNUM_QUEST_STORE_HEALER_SLEEVES,
	"Silver-laced armguards from the heavens. Grants the Divine Transferrance spell.",		
	{0,0,0,0,0,0,0,0,0,0,0,0,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_healer_sleeves	},
	
	{   "healer set bracelet",		2500,	REWARD_ARMOR, SET_ITEM, SET_HEALER,
	OBJ_VNUM_QUEST_STORE_HEALER_BRACELET,
	"A blessed bracelet of pure aquamarine. Grants the Greater Regeneration skill.",		
	{0,0,0,0,0,0,0,0,0,0,0,0,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_healer_bracelet	},
	
	{   "healer set statue",		2500,	REWARD_ARMOR, SET_ITEM, SET_HEALER,
	OBJ_VNUM_QUEST_STORE_HEALER_STATUE,
	"A statuette imbued with the essence of a goddess.",		
	{0,0,0,0,0,0,0,0,0,0,0,0,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_healer_statue	},
	
	{   "elementalist set helm",		2500,	REWARD_ARMOR, SET_ITEM, SET_ELEMENTALIST,
	OBJ_VNUM_QUEST_STORE_ELEMENTALIST_HELM,
	"A halo of frozen flame. Grants the Shatter Armor spell.",		
	{0,0,0,0,0,0,0,0,0,0,1,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_elementalist_helm	},
	
	{   "elementalist set neck",		2500,	REWARD_ARMOR, SET_ITEM, SET_ELEMENTALIST,
	OBJ_VNUM_QUEST_STORE_ELEMENTALIST_NECK,
	"A cloak of pure flowing water. Grants the Elemental Affinity skill.",		
	{0,0,0,0,0,0,0,0,0,0,1,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_elementalist_neck	},
	
	{   "elementalist set belt",		2500,	REWARD_ARMOR, SET_ITEM, SET_ELEMENTALIST,
	OBJ_VNUM_QUEST_STORE_ELEMENTALIST_BELT,
	"A cord of sparking electricity. Grants the Hurricane spell.",		
	{0,0,0,0,0,0,0,0,0,0,1,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_elementalist_belt	},
	
	{   "elementalist set ankh",		2500,	REWARD_ARMOR, SET_ITEM, SET_ELEMENTALIST,
	OBJ_VNUM_QUEST_STORE_ELEMENTALIST_FLAME,
	"A pure, flickering flame.",		
	{0,0,0,0,0,0,0,0,0,0,1,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_elementalist_flame	},

    //WEAPONS
    {   "warrior set weapon",		2500,	REWARD_WEAPON, SET_ITEM, SET_WARRIOR,
	OBJ_VNUM_QUEST_STORE_WARRIOR_WEAPON,
	"A weapon fashioned for the strongest of warriors. This weapon's type can \nbe converted by saying the phrase, \"Victory to the <weapon type>!\"",		
	{1,0,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_warrior_weapon	},

     {   "thief set weapon",		2500,	REWARD_WEAPON, SET_ITEM, SET_THIEF,
	OBJ_VNUM_QUEST_STORE_THIEF_DAGGER,
	"A lightweight dagger forged from shadow.",		
	{0,1,0,0,0,0,0,0,0,0,0,0,0},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_thief_dagger	},

    //BOOSTS
    {   "hp boost",			1000,	REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Maximum HP raised by 10.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_hp_boost		},
    
    {   "mana boost",			1000,	REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Maximum Mana raised by 30.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_mana_boost		},

    {   "move boost",			1000,	REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Maximum Moves raised by 30.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_move_boost		},	

    {   "attack modifier",			10000,	REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"One extra attack per round.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_attack_modifier	},

    {   "damage reduction",			4000,	REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Damage received reduced by 1%.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_damage_reduction	},

    {   "damage enhancement",			2000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Damage dealt increased by 1%.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_damage_enhancer	},

    {   "remove fire vuln",			5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips fire vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_fire	},

   {   "remove cold vuln",			5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips cold vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_cold	},

    {   "remove lightning vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips lightning vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_lightning	},

    {   "remove holy vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips holy vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_holy	},

    {   "remove negative vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips negative vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_negative	},

    {   "remove mental vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips mental vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_mental	},

    {   "remove bash vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips bashing vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_bash	},

    {   "remove iron vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips iron vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_iron	},

    {   "remove drowning vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips drowning vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_drowning	},

    {   "remove light vuln",		5000, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Strips light vulnerability.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_remove_vuln_light	},

    {   "add slash resistance",		7500, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Grants resistance to slashing attacks.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_add_resist_slash	},

    {   "add pierce resistance",		7500, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Grants resistance to piercing attacks.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_add_resist_pierce	},

    {   "add bash resistance",		7500, REWARD_BOOST, NOT_SET_ITEM, SET_NONE, 0,
	"Grants resistance to bashing attacks.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_add_resist_bash	},
	


    //MISCELLANEOUS
    {   "pill of recall",		250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) pill of recall.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_recall	},

    {   "pill of serum",		250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) poison antidote.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_antidote	},

     {  "pill of purifying",	250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) plague-counteracting pill.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_purifier	},

     {  "pill of holy water",	250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) pill filled with holy water, used for removing curses.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_holy_water	},

     {  "pill of teleportation",	250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) teleportation pill.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_teleport	},

     {  "pill of flight",	250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) pill of flying.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_flying	},

     {  "pill of pass-door",	250, REWARD_MISCELLANEOUS, NOT_SET_ITEM, SET_NONE, 0,
	"Buys one (1) pill of pass door.",
	{1,1,1,1,1,1,1,1,1,1,1,1,1},	
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	ALIGN_ANY, ETHOS_ANY,
	quest_reward_pill_pass_door	}

};

const struct set_type set_type_table[MAX_SET_TYPES] =
{
    {   SET_NONE, 	NULL,			NULL	 	},
    {   SET_WARRIOR,	"Victory (Warrior)",     check_set_item_warrior  	},
    {   SET_CHANNELER,  "Consciousness (Channeler)",   check_set_item_channeler },
    {   SET_THIEF,  	"Imperception (Thief)",   check_set_item_thief },
	{	SET_HEALER,		"Devotion (Healer)",	check_set_item_healer },
	{	SET_ELEMENTALIST,"Control (Elementalist)",	check_set_item_elementalist },
};

const struct sector_type sector_table[SECT_MAX] =
{
    {	"inside",	SECT_INSIDE,		1,	1,	"civilized"	},
    {	"city",		SECT_CITY,		1,	1,	"civilized"	},
    {	"field",	SECT_FIELD,		2,	1,	"uncivilized"	},
    {	"forest",	SECT_FOREST,		3,	2,	"uncivilized"	},
    {	"hills",	SECT_HILLS,		5,	2,	"uncivilized"	},
    {	"mountains",	SECT_MOUNTAIN,		6,	3,	"uncivilized"	},
    {	"water",	SECT_WATER_SWIM,	3,	1,	"uncivilized"	},
    {	"water",	SECT_WATER_NOSWIM,	3,	1,	"uncivilized"	},
    {	"unused",	SECT_UNUSED,		1,	1,	"civilized"	},
    {	"air",		SECT_AIR,		4,	2,	"uncivilized"	},
    {	"desert",	SECT_DESERT,		5,	4,	"uncivilized"	},
    {	"road",		SECT_ROAD,		2,	1,	"civilized"	},
    {	"underwater",	SECT_UNDERWATER,	4,	2,	"underwater"	}
};