atd/area/
atd/build/
atd/clans/
atd/log/
atd/player/store/
atd/site/
atd/src/bin/
/***************************************************************************
 *  God Wars Mud originally written by KaVir aka Richard Woolcock.         *
 *  Changes done to the code done by Sage aka Walter Howard, this mud is   *
 *  for the public, however if you run this code it means you agree        *
 *  to the license.low, license.gw, and license.merc have fun. :)          *
***************************************************************************/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"


struct flag_stat_type
{
    const struct flag_type *structure;
    bool stat;
};



/*****************************************************************************
 Name:		flag_stat_table
 Purpose:	This table catagorizes the tables following the lookup
 		functions below into stats and flags.  Flags can be toggled
                but stats can only be assigned.  Update this table when a
                new set of flags is installed.
                ****************************************************************************/
const struct flag_stat_type flag_stat_table[] =
{
/*  {	structure		stat	}, */
    {	area_flags,		FALSE	},
    {   sex_flags,		TRUE	},
    {   exit_flags,		FALSE	},
    {   door_resets,		TRUE	},
    {   room_flags,		FALSE	},
    {   sector_flags,		TRUE	},
    {   type_flags,		TRUE	},
    {   extra_flags,		FALSE	},
    {   wear_flags,		FALSE	},
    {   act_flags,		FALSE	},
    {   affect_flags,		FALSE	},
    {   apply_flags,		TRUE	},
    {   wear_loc_flags,		TRUE	},
    {   wear_loc_strings,	TRUE	},
    {   weapon_flags,		TRUE	},
    {   container_flags,	FALSE	},
    {   liquid_flags,		TRUE	},

    {   0,			0	}
};


/*****************************************************************************
 Name:		is_stat( table )
 Purpose:	Returns TRUE if the table is a stat table and FALSE if flag.
 Called by:	flag_value and flag_string.
 Note:		This function is local and used only in bit.c.
 ****************************************************************************/
bool is_stat( const struct flag_type *flag_table )
{
    int flag;

    for (flag = 0; flag_stat_table[flag].structure; flag++)
    {
	if ( flag_stat_table[flag].structure == flag_table
	  && flag_stat_table[flag].stat )
	    return TRUE;
    }
    return FALSE;
}



/*
 * This function is Russ Taylor's creation.  Thanks Russ!
 * All code copyright (C) Russ Taylor, permission to use and/or distribute
 * has NOT been granted.  Use only in this OLC package has been granted.
 */
/*****************************************************************************
 Name:		flag_lookup( flag, table )
 Purpose:	Returns the value of a single, settable flag from the table.
 Called by:	flag_value and flag_string.
 Note:		This function is local and used only in bit.c.
 ****************************************************************************/
int flag_lookup(const char *name, const struct flag_type *flag_table)
{
    int flag;
 
    for (flag = 0; *flag_table[flag].name; flag++)	/* OLC 1.1b */
    {
        if ( !str_cmp( name, flag_table[flag].name )
          && flag_table[flag].settable )
            return flag_table[flag].bit;
    }
 
    return NO_FLAG;
}



/*****************************************************************************
 Name:		flag_value( table, flag )
 Purpose:	Returns the value of the flags entered.  Multi-flags accepted.
 Called by:	olc.c and olc_act.c.
 ****************************************************************************/
int flag_value( const struct flag_type *flag_table, char *argument)
{
    char word[MAX_INPUT_LENGTH];
    int  bit;
    int  marked = 0;
    bool found = FALSE;

    if ( is_stat( flag_table ) )
    {
	one_argument( argument, word );

	if ( ( bit = flag_lookup( word, flag_table ) ) != NO_FLAG )
	    return bit;
	else
	    return NO_FLAG;
    }

    /*
     * Accept multiple flags.
     */
    for (; ;)
    {
        argument = one_argument( argument, word );

        if ( word[0] == '\0' )
	    break;

        if ( ( bit = flag_lookup( word, flag_table ) ) != NO_FLAG )
        {
            SET_BIT( marked, bit );
            found = TRUE;
        }
    }

    if ( found )
	return marked;
    else
	return NO_FLAG;
}



/*****************************************************************************
 Name:		flag_string( table, flags/stat )
 Purpose:	Returns string with name(s) of the flags or stat entered.
 Called by:	act_olc.c, olc.c, and olc_save.c.
 ****************************************************************************/
char *flag_string( const struct flag_type *flag_table, int bits )
{
    static char buf[512];
    int  flag;

    buf[0] = '\0';

    for (flag = 0; *flag_table[flag].name; flag++)	/* OLC 1.1b */
    {
	if ( !is_stat( flag_table ) && IS_SET(bits, flag_table[flag].bit) )
	{
	    strcat( buf, " " );
	    strcat( buf, flag_table[flag].name );
	}
	else
	if ( flag_table[flag].bit == bits )
	{
	    strcat( buf, " " );
	    strcat( buf, flag_table[flag].name );
	    break;
	}
    }
    return (buf[0] != '\0') ? buf+1 : "none";
}

char *act_xbv( const struct flag_type *table, const XBV vector )
{
    static char buf [ MAX_STRING_LENGTH ];
    int         pos;

    buf[0] = '\0';

    for ( pos = 0; *table[pos].name; pos++ )
    {
	if ( xIS_SET( vector, table[pos].bit ) )
	{
	    strcat( buf, " " );
	    strcat( buf, table[pos].name );
	}
    }
    return ( buf[0] != '\0' ) ? buf+1 : "none";
}


const struct flag_type area_flags[] =
{
    {	"none",			AREA_NONE,		FALSE	},
    {	"changed",		AREA_CHANGED,		FALSE	},
    {	"added",		AREA_ADDED,		FALSE	},
    {	"loading",		AREA_LOADING,		FALSE	},
    {	"unlinked",		AREA_UNLINKED,		TRUE	},
    {   "sanctuary",            AREA_SANCTUARY,         TRUE    },
    {   "quest",                AREA_QUEST,             TRUE    },
    {	"",			0,			0	}
};

const struct flag_type sex_flags[] =
{
    {	"male",			SEX_MALE,		TRUE	},
    {	"female",		SEX_FEMALE,		TRUE	},
    {	"neutral",		SEX_NEUTRAL,		TRUE	},
    {	"",			0,			0	}
};

const struct flag_type exit_flags[] =
{
    {   "door",			EX_ISDOOR,		TRUE    },
    {	"closed",		EX_CLOSED,		TRUE	},
    {	"locked",		EX_LOCKED,		TRUE	},
    {	"pickproof",		EX_PICKPROOF,		TRUE	},
    {   "bashproof",            EX_BASHPROOF,		TRUE	},
    {   "bashed",               EX_BASHED,              FALSE   },
    {   "passproof",            EX_PASSPROOF,		TRUE	},
    {	"",			0,			0	}
};

const struct flag_type door_resets[] =
{
    /* name        BIT,         settable? */
    { "open and unlocked",             0,   TRUE },
    { "closed",                        1,   TRUE },
    { "closed and locked",             2,   TRUE },
    { "open and secret",               3,   TRUE },
    { "closed, secret, and pickproof", 4,   TRUE },
    { "pickproof, nopass, and closed", 5,   TRUE },
    {   "",                            0,   0    }
};

const struct flag_type room_flags[] =
{
    { "dark",           ROOM_DARK,             TRUE },
    { "no_mobs",        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_teleport",    ROOM_NO_TELEPORT,      TRUE },
    { "total_darkness", ROOM_TOTAL_DARKNESS,   TRUE },
    { "blade_barrier",	ROOM_BLADE_BARRIER,    TRUE },
    { "flaming",	ROOM_FLAMING,	       TRUE },
    { "silence",	ROOM_SILENCE,	       TRUE },
    { "castle_1",       ROOM_CASTLE1,          TRUE },
    { "castle_2",       ROOM_CASTLE2,          TRUE },
    { "castle_3",       ROOM_CASTLE3,          TRUE },
    { "castle_4",       ROOM_CASTLE4,          TRUE },
    { "castle_5",       ROOM_CASTLE5,          TRUE },
    { "castle_6",       ROOM_CASTLE6,          TRUE },
    { "castle_7",       ROOM_CASTLE7,          TRUE },
    { "castle_8",       ROOM_CASTLE8,          TRUE },
    { "castle_9",       ROOM_CASTLE9,          TRUE },
    { "castle_10",      ROOM_CASTLE10,         TRUE },
    { "",               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	},
    {	"air",		SECT_AIR,		TRUE	},
    {	"desert",	SECT_DESERT,		TRUE	},
    {	"",		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	},
    {	"drink-container", ITEM_DRINK_CON,     	TRUE	},
    {	"key",		   ITEM_KEY,		TRUE	},
    {	"food",		   ITEM_FOOD,		TRUE	},
    {	"money",	   ITEM_MONEY,		TRUE	},
    {	"boat",		   ITEM_BOAT,		TRUE	},
    {	"npc corpse",	   ITEM_CORPSE_NPC,	TRUE	},
    {	"pc corpse",	   ITEM_CORPSE_PC,     	FALSE	},
    {	"fountain",	   ITEM_FOUNTAIN,     	TRUE	},
    {	"pill",		   ITEM_PILL,		TRUE	},
    { 	"portal",	   ITEM_PORTAL,		TRUE	},
    {	"egg",		   ITEM_EGG,		TRUE	},
    {	"voodoo",	   ITEM_VOODOO,		TRUE	},
    {	"stake",	   ITEM_STAKE,		TRUE	},
    { 	"missile",	   ITEM_MISSILE,       	TRUE	},
    {	"ammo",		   ITEM_AMMO,		TRUE	},
    { 	"quest",	   ITEM_QUEST,		TRUE	},
    {	"questcard",	   ITEM_QUESTCARD,    	TRUE	},
    {	"questmachine",	   ITEM_QUESTMACHINE,	TRUE	},
    { 	"symbol",	   ITEM_SYMBOL,		TRUE	},
    {   "book",		   ITEM_BOOK,		TRUE	},
    {	"page",		   ITEM_PAGE,		TRUE	},
    {	"tool",		   ITEM_TOOL,		TRUE	},
    {	"wall",		   ITEM_WALL,		TRUE	},
    {   "ward",            ITEM_WARD,           TRUE    },
    {   "waygate",         ITEM_WGATE,          TRUE    },
    {	"",	           0,			0	}
};

const struct flag_type extra_flags[] =
{
    {	"glow",			ITEM_GLOW,		TRUE	},
    {	"hum",			ITEM_HUM,		TRUE	},
    {	"thrown",		ITEM_THROWN,		TRUE	},
    {	"keep",			ITEM_KEEP,		TRUE	},
    {	"vanish",		ITEM_VANISH,		TRUE	},
    {	"invis",		ITEM_INVIS,		TRUE	},
    {	"magic",		ITEM_MAGIC,		TRUE	},
    {	"nodrop",		ITEM_NODROP,		TRUE	},
    {	"bless",		ITEM_BLESS,		TRUE	},
    {	"anti-good",		ITEM_ANTI_GOOD,		TRUE	},
    {	"anti-evil",		ITEM_ANTI_EVIL,		TRUE	},
    {	"anti-neutral",		ITEM_ANTI_NEUTRAL,	TRUE	},
    {	"noremove",		ITEM_NOREMOVE,		TRUE	},
    {	"inventory",		ITEM_INVENTORY,		TRUE	},
    {	"shadowplane",		ITEM_SHADOWPLANE,	TRUE	},
    { 	"loyal",		ITEM_LOYAL,		TRUE	},
    {   "illusion",             ITEM_VANISH,            TRUE    },
    {   "dark",                 ITEM_DARK,              TRUE    },
    {   "mage_enchant",         ITEM_MENCHANT,          FALSE   },
    {   "noclaim",              ITEM_NOCLAIM,           TRUE    },
    {   "nocopy",               ITEM_NOCOPY,            TRUE    },
    {   "satanic",              ITEM_SATANIC,           TRUE    },
    {   "cloaked",              ITEM_CLOAKED,           FALSE   },
    {	"",			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	},
    {	"face",			ITEM_WEAR_FACE,		TRUE	},
    {   "ear",                  ITEM_WEAR_EAR,          TRUE    },
    {   "ankle",                ITEM_WEAR_ANKLE,        TRUE    },
    {   "nose",                 ITEM_WEAR_NOSE,         TRUE    },
    {   "mastery",              ITEM_WEAR_MASTERY,      TRUE    },
    {	"",			0,			0	}
};

const struct flag_type act_flags[] =
{
    {	"npc",			ACT_IS_NPC,		FALSE	},
    {	"sentinel",		ACT_SENTINEL,		TRUE	},
    {	"scavenger",		ACT_SCAVENGER,		TRUE	},
    {	"aggressive",		ACT_AGGRESSIVE,		TRUE	},
    {	"stay_area",		ACT_STAY_AREA,		TRUE	},
    {	"wimpy",		ACT_WIMPY,		TRUE	},
    {	"pet",			ACT_PET,		TRUE	},
    {	"train",		ACT_TRAIN,		TRUE	},
    {	"practice",		ACT_PRACTICE,		TRUE	},
    {	"mount",		ACT_MOUNT,		TRUE	},
    {	"no_parts",		ACT_NOPARTS,		TRUE	},
    {	"no_exp",		ACT_NOEXP,		TRUE	},
    {   "skilled",		ACT_SKILLED,		TRUE	},
    {   "noastral",             ACT_NOASTRAL,           TRUE    },
    {   "shopquest",            ACT_SHOPQUEST,          TRUE    },
    {   "questmaster",          ACT_QUESTMASTER,        TRUE    },
    {	"",			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	},
    {	"shadowplane",		AFF_SHADOWPLANE,	TRUE	},
    {	"sanctuary",		AFF_SANCTUARY,		TRUE	},
    {	"faerie_fire",		AFF_FAERIE_FIRE,	TRUE	},
    {	"infrared",		AFF_INFRARED,		TRUE	},
    {	"curse",		AFF_CURSE,		TRUE	},
    {	"flaming",		AFF_FLAMING,		TRUE	},
    {	"poison",		AFF_POISON,		TRUE	},
    {	"protect",		AFF_PROTECT,		TRUE	},
    {	"ethereal",		AFF_ETHEREAL,		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	},
    {	"polymorph",		AFF_POLYMORPH,		FALSE	},
    {	"shadowsight",		AFF_SHADOWSIGHT,	TRUE	},
    {	"",			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	},
    {	"str",		        APPLY_STR,		TRUE	},
    {	"dex",	          	APPLY_DEX,		TRUE	},
    {	"int",	         	APPLY_INT,		TRUE	},
    {	"wis",   	 	APPLY_WIS,		TRUE	},
    {	"con",		        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	},
    {	"saving-para",		APPLY_SAVING_PARA,	TRUE	},
    {	"saving-rod",		APPLY_SAVING_ROD,	TRUE	},
    {	"saving-petri",		APPLY_SAVING_PETRI,	TRUE	},
    {	"saving-breath",	APPLY_SAVING_BREATH,	TRUE	},
    {	"saving-spell",		APPLY_SAVING_SPELL,	TRUE	},
    {   "blood_pool",           APPLY_BLOOD_MAX,        TRUE    },
    {   "blood_potency",        APPLY_BLOOD_POT,        TRUE    },
    {	"",			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	},
    {	"about the body",	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	},
    {	"on the face",		WEAR_FACE,	TRUE	},
    {	"as a shield",		WEAR_SHIELD,	TRUE	},
    {	"first hand",		WEAR_WIELD,	TRUE	},
    {	"second hand",		WEAR_HOLD,	TRUE	},
    {	"third hand",		WEAR_THIRD,	TRUE	},
    {	"fourth hand",		WEAR_FOURTH,	TRUE	},
    {	"left scabbard",	WEAR_SCABBARD_L,TRUE	},
    {	"right scabbard",	WEAR_SCABBARD_R,TRUE	},
    {	"",			0			}
};

/*
 * What is typed.
 * Neck2 should not be settable for loaded mobiles.
 */
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	},
    {	"neck",		WEAR_NECK_1,	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	},
    {	"face",		WEAR_FACE,	TRUE	},
    {	"",		0,		0	}
};


const struct flag_type weapon_flags[] =
{
    {	"hit",		0,	TRUE	},
    {	"slice",	1,	TRUE	},
    {	"stab",		2,	TRUE	},
    {	"slash",	3,	TRUE	},
    {	"whip",		4,	TRUE	},
    {	"claw",		5,	TRUE	},
    {	"blast",	6,	TRUE	},
    {	"pound",	7,	TRUE	},
    {	"crush",	8,	TRUE	},
    {	"grep",		9,	TRUE	},
    {	"bite",		10,	TRUE	},
    {	"pierce",	11,	TRUE	},
    {	"suck",		12,	TRUE	},
    {	"",		0,	0	}
};

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

const struct flag_type liquid_flags[] =
{
    {	"water",		0,	TRUE	},
    {	"beer",			1,	TRUE	},
    {	"wine",			2,	TRUE	},
    {	"ale",			3,	TRUE	},
    {	"dark-ale",		4,	TRUE	},
    {	"whisky",		5,	TRUE	},
    {	"lemonade",		6,	TRUE	},
    {	"firebreather",		7,	TRUE	},
    {	"local-specialty",	8,	TRUE	},
    {	"slime-mold-juice",	9,	TRUE	},
    {	"milk",			10,	TRUE	},
    {	"tea",			11,	TRUE	},
    {	"coffee",		12,	TRUE	},
    {	"blood",		13,	TRUE	},
    {	"salt-water",		14,	TRUE	},
    {	"cola",			15,	TRUE	},
    {	"",			0,	0	}
};

const struct flag_type newbit_flags[] =
{
    {   "newbie_pack",  NEWBIE_PACK, TRUE },
    {   "third_hand",   THIRD_HAND,  TRUE },
    {   "fourth_hand",  FOURTH_HAND, TRUE },
    {   "mudcop",       NEW_MUDCOP,  TRUE },
    {   "mcr",          NEW_MCR,     TRUE },
    {   "",             0,           0    }
};

const struct flag_type plr_flags[] =
{
    {  "npc",        PLR_IS_NPC,     FALSE },
    {  "demon",      PLR_DEMON,      TRUE  },
    {  "champion",   PLR_CHAMPION,   TRUE  },
    {  "autoexits",  PLR_AUTOEXIT,   TRUE  },
    {  "autoloot",   PLR_AUTOLOOT,   TRUE  },
    {  "autosac",    PLR_AUTOSAC,    TRUE  },
    {  "blank",      PLR_BLANK,      TRUE  },
    {  "brief",      PLR_BRIEF,      TRUE  },
    {  "combine",    PLR_COMBINE,    TRUE  },
    {  "prompt",     PLR_PROMPT,     TRUE  },
    {  "telnet_ga",  PLR_TELNET_GA,  TRUE  },
    {  "holylight",  PLR_HOLYLIGHT,  TRUE  },
    {  "wizinvis",   PLR_WIZINVIS,   TRUE  },
    {  "ansi",       PLR_ANSI,       TRUE  },
    {  "silence",    PLR_SILENCE,    TRUE  },
    {  "incog",      PLR_INCOG,      TRUE  },
    {  "log",        PLR_LOG,        TRUE  },
    {  "deny",       PLR_DENY,       TRUE  },
    {  "freeze",     PLR_FREEZE,     TRUE  },
    {  "godless",    PLR_GODLESS,    TRUE  },
    {  "watcher",    PLR_WATCHER,    TRUE  },
    {  "drowsight",  PLR_DROWSIGHT,  TRUE  },
    {  "embraced",   PLR_EMBRACED,   TRUE  },
    {  "embracing",  PLR_EMBRACING,  TRUE  },
    {  "acid",       PLR_ACID,       TRUE  },
    {  "last_aggro", PLR_LAST_AGG,   TRUE  },
    {  "autocrack",  PLR_AUTOCRACK,  TRUE  },
    {  "autohead",   PLR_AUTOHEAD,   TRUE  },
    {  "",           0           ,   0     }
};

const struct flag_type imm_flags[] =
{
    {  "slash",     IMM_SLASH,     TRUE },
    {  "stab",      IMM_STAB,      TRUE },
    {  "smash",     IMM_SMASH,     TRUE },
    {  "animal",    IMM_ANIMAL,    TRUE },
    {  "misc",      IMM_MISC,      TRUE },
    {  "charm",     IMM_CHARM,     TRUE },
    {  "heat",      IMM_HEAT,      TRUE },
    {  "cold",      IMM_COLD,      TRUE },
    {  "lightning", IMM_LIGHTNING, TRUE },
    {  "acid",      IMM_ACID,      TRUE },
    {  "summon",    IMM_SUMMON,    TRUE },
    {  "voodoo",    IMM_VOODOO,    TRUE },
    {  "vampire",   IMM_VAMPIRE,   TRUE },
    {  "stake",     IMM_STAKE,     TRUE },
    {  "sunlight",  IMM_SUNLIGHT,  TRUE },
    {  "shielded",  IMM_SHIELDED,  TRUE },
    {  "hurl",      IMM_HURL,      TRUE },
    {  "backstab",  IMM_BACKSTAB,  TRUE },
    {  "kick",      IMM_KICK,      TRUE },
    {  "disarm",    IMM_DISARM,    TRUE },
    {  "steal",     IMM_STEAL,     TRUE },
    {  "sleep",     IMM_SLEEP,     TRUE },
    {  "drain",     IMM_DRAIN,     TRUE },
    {  "demon",     IMM_DEMON,     TRUE },
    {  "transport", IMM_TRANSPORT, TRUE },
    {  "travel",    IMM_TRAVEL,    TRUE },
    {  "",          0,             0    }
};

const struct flag_type itema_flags[] =
{
    {  "shockshield",   ITEMA_SHOCKSHIELD,  TRUE  },
    {  "fireshield",    ITEMA_FIRESHIELD,   TRUE  },
    {  "iceshield",     ITEMA_ICESHIELD,    TRUE  },
    {  "dbpass",        ITEMA_DBPASS,       TRUE  },
    {  "chaosshield",   ITEMA_CHAOSSHIELD,  TRUE  },
    {  "artifact",      ITEMA_ARTIFACT,     TRUE  },
    {  "regenerate",    ITEMA_REGENERATE,   TRUE  },
    {  "speed",         ITEMA_SPEED,        TRUE  },
    {  "vorpal",        ITEMA_VORPAL,       TRUE  },
    {  "peace",         ITEMA_PEACE,        TRUE  },
    {  "rightsilver",   ITEMA_RIGHT_SILVER, TRUE  },
    {  "leftsilver",    ITEMA_LEFT_SILVER,  TRUE  },
    {  "reflect",       ITEMA_REFLECT,      TRUE  },
    {  "vision",        ITEMA_VISION,       TRUE  },
    {  "vanish",        ITEMA_VANISH,       TRUE  },
    {  "rager",         ITEMA_RAGER,        TRUE  },
    {  "sunshield",     ITEMA_SUNSHIELD,    TRUE  },
    {  "",              0,                  0     }
};

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

const struct flag_type log_flags[] =
{
    {  "normal",     LOG_NORMAL,    TRUE },
    {  "always",     LOG_ALWAYS,    TRUE },
    {  "never",      LOG_NEVER,     TRUE },
    {  "",          0,              0    }
};

const struct flag_type level_flags [] =
{
    {  "all",         0,                 TRUE },
    {  "mortal",      1,                 TRUE },
    {  "avatar",      LEVEL_AVATAR,      TRUE },
    {  "mage",        LEVEL_APPRENTICE,  TRUE },
    {  "ninja",       LEVEL_NINJA,       TRUE },
    {  "monk",        LEVEL_MONK,        TRUE },
    {  "builder",     LEVEL_BUILDER,     TRUE },
    {  "questmaker",  LEVEL_QUESTMAKER,  TRUE },
    {  "enforcer",    LEVEL_ENFORCER,    TRUE },
    {  "judge",       LEVEL_JUDGE,       TRUE },
    {  "highjudge",   LEVEL_HIGHJUDGE,   TRUE },
    {  "implementor", LEVEL_IMPLEMENTOR, TRUE },
    {  "",            0,                 0    }
};

const struct flag_type quest_flags [] =
{
    {  "artifact",    QUEST_ARTIFACT,    FALSE },
    {  "relic",       QUEST_RELIC,       TRUE  },
    {  "mastery",     QUEST_MASTERY,     TRUE  },
    {  "",            0,                 0    }
};

const struct flag_type world_flags [] =
{
    { "fog",          WORLD_FOG,       TRUE },
    { "rain",         WORLD_RAIN,      TRUE },
    { "eclipse",      WORLD_ECLIPSE,   TRUE },
    { "NICE",         WORLD_NICE,      TRUE },
    { "DOUBLEEXP",    WORLD_DOUBLEXP, FALSE },
    { "WIZLOCKED",    WIZLOCKED,       TRUE },
    { "copyover",     WORLD_COPYOVER, FALSE },
    { "reboot",       WORLD_REBOOT  , FALSE },
    { "shutdown",     WORLD_SHUTDOWN, FALSE },
    { "random_dam",   WORLD_RANDOMIZEDAM, TRUE },
    { "statusarena",  WORLD_STATUSARENA, TRUE },
    { "deathmatch",   WORLD_DEATHMATCH, TRUE },
    { "",             0,               0    }
};

const struct flag_type show_flags[] =
{
   { "never",   CSHOW_NEVER,    TRUE },
   { "vampire", CSHOW_VAMPIRE,  TRUE },
   { "garou",   CSHOW_WEREWOLF, TRUE },
   { "monk",    CSHOW_MONK,     TRUE },
   { "demon",   CSHOW_DEMON,    TRUE },
   { "priest",  CSHOW_PRIEST,   TRUE },
   { "drow",    CSHOW_DROW,     TRUE },
   { "mage",    CSHOW_MAGE,     TRUE },
   { "angel",   CSHOW_ANGEL,    TRUE },
   { "ninja",   CSHOW_NINJA,    TRUE },
   { "mudcop",  CSHOW_MUDCOP,   TRUE },
   { "",        0,              0    }
};   

const struct flag_type rt_flags [] =
{
   { "lights",     RT_LIGHTS,      TRUE },
   { "say",        RT_SAY,         TRUE },
   { "enter",      RT_ENTER,       TRUE },
   { "cast",       RT_CAST,        TRUE },
   { "throwout",   RT_THROWOUT,    TRUE },
   { "object",     RT_OBJECT,      TRUE },
   { "mobile",     RT_MOBILE,      TRUE },
   { "light",      RT_LIGHT,       TRUE },
   { "dark",       RT_DARK,        TRUE },
   { "open_lift",  RT_OPEN_LIFT,   TRUE },
   { "close_lift", RT_CLOSE_LIFT,  TRUE },
   { "move_lift",  RT_MOVE_LIFT,   TRUE },
   { "spell",      RT_SPELL,       TRUE },
   { "portal",     RT_PORTAL,      TRUE },
   { "teleport",   RT_TELEPORT,    TRUE },
   { "action",     RT_ACTION,      TRUE },
   { "return",     RT_RETURN,      TRUE },
   { "personal",   RT_PERSONAL,    TRUE },
   { "timer",      RT_TIMER,       TRUE },
   { "",           0,              0    }
};
const struct flag_type weap_flags [ ] =
{
   { "flaming",   WEAPON_FLAMING, TRUE },
   { "poison",    WEAPON_POISON,  TRUE },
   { "frost",     WEAPON_FROST,   TRUE },
   { "holy",      WEAPON_HOLY,    TRUE },
   { "",          0,  0 }
};