asgard/
asgard/.settings/
asgard/area/
asgard/data/clans/
asgard/data/clans/history/
asgard/data/rosters/
asgard/src/notice/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik Strfeldt, 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-1995 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 Rom24/doc/rom.license			   *
 ***************************************************************************/

/*************************************************************************** 
 *       ROT 1.4 is copyright 1996-1997 by Russ Walsh                       *
 *       By using this code, you have agreed to follow the terms of the     *
 *       ROT license, in the file doc/rot.license                           *
 ***************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <time.h>
#include "merc.h"
#include "tables.h"

/* 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 },
{ "key", D, FALSE },
{ "ranger", E, TRUE },
{ "aggressive", F, TRUE },
{ "stay_area", G, TRUE },
{ "wimpy", H, TRUE },
{ "pet", I, TRUE },
{ "train", J, TRUE },
{ "practice", K, TRUE },
{ "druid", L, TRUE },
{ "no_body", M, TRUE },
{ "nobd_drop", N, TRUE },
{ "undead", O, TRUE },
{ "vampire", P, TRUE },
{ "cleric", Q, TRUE },
{ "mage", R, TRUE },
{ "thief", S, TRUE },
{ "warrior", T, TRUE },
{ "noalign", U, TRUE },
{ "nopurge", V, TRUE },
{ "outdoors", W, TRUE },
{ "is_satan", X, TRUE },
{ "indoors", Y, TRUE },
{ "is_priest", Z, TRUE },
{ "healer", aa, TRUE },
{ "gain", bb, TRUE },
{ "update_always", cc, TRUE },
{ "banker", dd, TRUE },
//{   "stockman",             gg,     TRUE    },
		{ NULL, 0, FALSE } };

const struct flag_type plr_flags[] =
{
{ "npc", A, FALSE },
{ "color", B, FALSE },
{ "autoassist", C, FALSE },
{ "autoexit", D, FALSE },
{ "autoloot", E, FALSE },
{ "autosac", F, FALSE },
{ "autogold", G, FALSE },
{ "autosplit", H, FALSE },
{ "notran", I, FALSE },
{ "noevolve", J, FALSE },
{ "nogoto", T, FALSE },
{ "noviolate", ff, FALSE },
{ "norestore", L, FALSE },
{ "notitle", M, FALSE },
{ "holylight", N, FALSE },
{ "can_loot", P, FALSE },
{ "nosummon", Q, FALSE },
{ "nofollow", R, FALSE },
{ "permit", U, TRUE },
{ "log", W, FALSE },
{ "deny", X, FALSE },
{ "freeze", Y, FALSE },
{ "twit", Z, FALSE },
{ "key", bb, FALSE },
{ "noclan", cc, FALSE },
{ "challenger", ee, TRUE },
{ "challenged", ff, TRUE },
{ NULL, 0, 0 } };

/* Crusader Class flags by Dusk  */
/*const struct flag_type ability_crusader_flags[] =
 {
 {   "Sunder",               A,      TRUE    },
 {   NULL,                   0,      0       }
 };*/

/* Lich/Fade/Necromancer/Banshee Things */
const struct flag_type ability_lich_flags[] =
{
{ "Daywalker", A, TRUE },
{ NULL, 0, 0 } };

const struct flag_type affect_flags[] =
{
{ "blind", A, TRUE },
{ "detect_evil", C, TRUE },
{ "detect_invis", D, TRUE },
{ "detect_magic", E, TRUE },
{ "detect_motion", F, TRUE },
{ "detect_good", G, TRUE },
{ "faerie_fire", I, TRUE },
{ "infrared", J, TRUE },
{ "curse", K, TRUE },
{ "farsight", L, TRUE },
{ "poison", M, TRUE },
{ "sneak", P, TRUE },
{ "hide", Q, TRUE },
{ "sleep", R, TRUE },
{ "charm", S, TRUE },
{ "flying", T, TRUE },
{ "pass_door", U, TRUE },
{ "haste", V, TRUE },
{ "calm", W, TRUE },
{ "plague", X, TRUE },
{ "weaken", Y, TRUE },
{ "dark_vision", Z, TRUE },
{ "berserk", aa, TRUE },
{ "swim", bb, TRUE },
{ "regeneration", cc, TRUE },
{ "slow", dd, TRUE },
{ "remort", ee, TRUE },
{ NULL, 0, 0 } };

const struct flag_type shield_flags[] =
{
{ "protect_voodoo", A, TRUE },
{ "invisible", B, TRUE },
{ "ice", C, TRUE },
{ "fire", D, TRUE },
{ "shock", E, TRUE },
{ "sanctuary", H, TRUE },
{ "protect_evil", N, TRUE },
{ "protect_good", O, TRUE },
{ NULL, 0, 0 } };

const struct flag_type off_flags[] =
{
{ "area_attack", A, TRUE },
{ "backstab", B, TRUE },
{ "bash", C, TRUE },
{ "berserk", D, TRUE },
{ "disarm", E, TRUE },
{ "dodge", F, TRUE },
{ "fade", G, TRUE },
{ "fast", H, TRUE },
{ "kick", I, TRUE },
{ "dirt_kick", J, TRUE },
{ "parry", K, TRUE },
{ "rescue", L, TRUE },
{ "tail", M, TRUE },
{ "trip", N, TRUE },
{ "crush", O, TRUE },
{ "assist_all", P, TRUE },
{ "assist_align", Q, TRUE },
{ "assist_race", R, TRUE },
{ "assist_players", S, TRUE },
{ "assist_guard", T, TRUE },
{ "assist_vnum", U, TRUE },
{ "clan_guard", W, TRUE },
{ NULL, 0, 0 } };

/* const struct flag_type affect_room_flags[]=
 {
 {  "None",         AFFECT_NONE,        TRUE     },
 // {  "shock",        AFFECT_SHOCK,       TRUE     },
 {  "tele",         AFFECT_TELE,        TRUE     },
 {  "slow",         AFFECT_SLOW,        TRUE     },
 {  "poison",       AFFECT_POISON,      TRUE     },
 {  "sleep",        AFFECT_SLEEP,       TRUE     },
 {  "curse",        AFFECT_CURSE,       TRUE     },
 {  "blind",        AFFECT_BLIND,       TRUE     },
 {  "plague",       AFFECT_PLAGUE,      TRUE     },
 {  "weaken",       AFFECT_WEAKEN,      TRUE     },
 {  "berserk",      AFFECT_BERSERK,     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 item_extra[] =
{
{ "glowing", A, TRUE },
{ "humming", B, TRUE },
{ "dark", C, TRUE },
{ "lock", D, FALSE },
{ "evil", E, TRUE },
{ "invisible", F, TRUE },
{ "magic", G, TRUE },
{ "nodrop", H, TRUE },
{ "bless", I, TRUE },
{ "anti_good", J, TRUE },
{ "anti_evil", K, TRUE },
{ "anti_neutral", L, TRUE },
{ "noremove", M, TRUE },
{ "inventory", N, TRUE },
{ "nopurge", O, TRUE },
{ "rot_death", P, TRUE },
{ "vis_death", Q, TRUE },
{ "nosacrifice", R, TRUE },
{ "nonmetal", S, FALSE },
{ "nolocate", T, TRUE },
{ "melt_drop", U, TRUE },
{ "had_timer", U, FALSE },
{ "sell_extract", W, TRUE },
{ "burn_proof", Y, TRUE },
{ "nouncurse", Z, TRUE },
{ "quest", aa, TRUE },
{ "forced", bb, TRUE },
{ "questpoint", cc, TRUE },
{ "norestring", dd, TRUE },
{ "remort", ee, TRUE },
{ "noenchant", ff, TRUE }, //noenchant flag by bree
		{ NULL, 0, 0 } };

const struct flag_type item_wear[] =
{
{ "take", A, TRUE },
{ "finger", B, TRUE },
{ "neck", C, TRUE },
{ "torso", D, TRUE },
{ "head", E, TRUE },
{ "legs", F, TRUE },
{ "feet", G, TRUE },
{ "hands", H, TRUE },
{ "arms", I, TRUE },
{ "shield", J, TRUE },
{ "body", K, TRUE },
{ "waist", L, TRUE },
{ "wrist", M, TRUE },
{ "wield", N, TRUE },
{ "hold", O, TRUE },
{ "no_sac", P, TRUE },
{ "float", Q, TRUE },
{ "face", R, TRUE },
{ "ear", S, TRUE },
{ "ankle", T, TRUE },
{ "clan", U, TRUE },
{ "relig", V, TRUE },
{ "patch", W, TRUE },
{ "back", X, TRUE },
{ NULL, 0, 0 } };

const struct flag_type item_weapon[] =
{
{ "flaming", A, TRUE },
{ "frost", B, TRUE },
{ "vampiric", C, TRUE },
{ "sharp", D, TRUE },
{ "vorpal", E, TRUE },
{ "two-handed", F, TRUE },
{ "shocking", G, TRUE },
{ "poisoned", H, TRUE },
{ "osmosis", I, TRUE },
{ "energydrain", J, TRUE },
//  {   "elemental",             K,      TRUE    },
		{ NULL, 0, 0 } };

const struct flag_type area_room[] =
{
{ "dark", A, TRUE },
{ "no_mobs", C, TRUE },
{ "indoors", D, TRUE },
{ "teleport", G, TRUE },
{ "shop", H, TRUE },
{ "no_magic", I, TRUE },
{ "private", J, TRUE },
{ "safe", K, TRUE },
{ "solitary", L, TRUE },
{ "pet_shop", M, FALSE },
{ "no_recall", N, TRUE },
{ "imp", O, FALSE },
{ "gods", P, FALSE },
{ "heroes", Q, FALSE },
{ "newbies", R, FALSE },
{ "law", S, TRUE },
{ "nowhere", T, FALSE },
{ "locked", X, FALSE },
{ "remort", aa, TRUE },
{ "silenced", bb, TRUE },
{ "No_Aesir", cc, TRUE }, //no aesir flag for rooms
		{ "No_Mythic", dd, TRUE }, //no mythic flag for rooms
		{ 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 },
{ "noclangossip", COMM_NOAUCTION, TRUE },
{ "nopubchans", COMM_NOPUBCHAN, TRUE },
{ "noclan", COMM_NOCLAN, TRUE },
{ "noqgossip", COMM_NOQGOSSIP, TRUE },
{ "noask", COMM_NOASK, TRUE },
{ "nomusic", COMM_NOMUSIC, TRUE },
{ "noclan", COMM_NOCLAN, TRUE },
{ "nocgossip", PLR_NOCGOSSIP, TRUE },
{ "nochat", COMM_NOCHAT, TRUE },
{ "nosocial", COMM_NOSOCIAL, TRUE },
{ "noquote", COMM_NOQUOTE, TRUE },
{ "shoutsoff", COMM_SHOUTSOFF, TRUE },
{ "true_trust", COMM_TRUE_TRUST, TRUE },
{ "compact", COMM_COMPACT, TRUE },
{ "brief", COMM_BRIEF, TRUE },
{ "short", PLR_SHORT_COMBAT, TRUE },
{ "prompt", COMM_PROMPT, TRUE },
{ "long", COMM_LONG, TRUE },
{ "store", COMM_STORE, TRUE },
{ "combine", COMM_COMBINE, TRUE },
{ "telnet_ga", COMM_TELNET_GA, TRUE },
{ "show_affects", COMM_SHOW_AFFECTS, TRUE },
{ "nograts", COMM_NOGRATS, TRUE },
{ "wiped", COMM_WIPED, FALSE },
{ "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, FALSE },
{ "nopray", SHD_NOPRAY, TRUE },
{ NULL, 0, 0 } };

const struct flag_type mprog_flags[] =
{
{ "act", TRIG_ACT, TRUE },
{ "bribe", TRIG_BRIBE, TRUE },
{ "death", TRIG_DEATH, TRUE },
{ "entry", TRIG_ENTRY, TRUE },
{ "fight", TRIG_FIGHT, TRUE },
{ "give", TRIG_GIVE, TRUE },
{ "greet", TRIG_GREET, TRUE },
{ "grall", TRIG_GRALL, TRUE },
{ "kill", TRIG_KILL, TRUE },
{ "hpcnt", TRIG_HPCNT, TRUE },
{ "random", TRIG_RANDOM, TRUE },
{ "speech", TRIG_SPEECH, TRUE },
{ "exit", TRIG_EXIT, TRUE },
{ "exall", TRIG_EXALL, TRUE },
{ "delay", TRIG_DELAY, TRUE },
{ "surr", TRIG_SURR, TRUE },
{ NULL, 0, TRUE } };

const struct flag_type area_flags[] =
{
{ "none", AREA_NONE, FALSE },
{ "changed", AREA_CHANGED, TRUE },
{ "added", AREA_ADDED, TRUE },
{ "loading", AREA_LOADING, FALSE },
{ "restricted", AREA_RESTRICTED, 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 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 },
{ "hidden", EX_HIDDEN, 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 },
{ "shop", ROOM_SHOP, TRUE },
{ "nomagic", ROOM_NO_MAGIC, 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 },
{ "imp_only", ROOM_IMP_ONLY, TRUE },
{ "gods_only", ROOM_GODS_ONLY, TRUE },
{ "heroes_only", ROOM_HEROES_ONLY, TRUE },
{ "newbies_only", ROOM_NEWBIES_ONLY, TRUE },
{ "law", ROOM_LAW, TRUE },
{ "nowhere", ROOM_NOWHERE, TRUE },
{ "clan_entrance", ROOM_CLAN_ENT, TRUE },
{ "locked", ROOM_LOCKED, TRUE },
{ "trap", ROOM_TRAP, TRUE },
{ "arena", ROOM_ARENA, TRUE },
{ "remort", ROOM_REMORT, TRUE },
{ "silenced", ROOM_SILENCED, TRUE },
{ "on_fire", ROOM_ON_FIRE, 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 },
{ 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 },
{ "demonstone", ITEM_DEMON_STONE, TRUE },
{ "exit", ITEM_EXIT, TRUE },
{ "pit", ITEM_PIT, TRUE },
{ "passbook", ITEM_PASSBOOK, TRUE },
{ "skeleton", ITEM_SKELETON, TRUE },
{ "slotmachine", ITEM_SLOT_MACHINE, 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 },
{ "nosac", ITEM_NOSAC, TRUE },
{ "nonmetal", ITEM_NONMETAL, TRUE },
{ "nolocate", ITEM_NOLOCATE, 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 },
{ "noenchant", ITEM_NOENCHANT, TRUE },
{ "norestring", ITEM_NORESTRING, TRUE },
{ "clan", ITEM_CLAN, TRUE },
{ "quest", ITEM_QUEST, 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 },
{ "wearfloat", ITEM_WEAR_FLOAT, TRUE },
{ "face", ITEM_WEAR_FACE, TRUE },
{ "ear", ITEM_WEAR_EAR, TRUE },
{ "ankle", ITEM_WEAR_ANKLE, TRUE },
{ "clan", ITEM_WEAR_CLAN, TRUE },
{ "relig", ITEM_WEAR_RELIG, TRUE },
{ "patch", ITEM_WEAR_PATCH, TRUE },
{ "back", ITEM_WEAR_BACK, 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 },
{ "regeneration", APPLY_REGEN, TRUE },
{ "manaregen", APPLY_MANA_REGEN, TRUE },
{ "morph", APPLY_MORPH_FORM, 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 },
{ "floating nearby", WEAR_FLOAT, TRUE },
{ "secondary wield", WEAR_SECONDARY, TRUE },
{ "on the face", WEAR_FACE, TRUE },
{ "on the ears", WEAR_EAR, TRUE },
{ "around the left ankle", WEAR_ANKLE_L, TRUE },
{ "around the right ankle", WEAR_ANKLE_R, TRUE },
{ "as a clan patch", WEAR_CLAN, TRUE },
{ "as a religious patch", WEAR_RELIG, TRUE },
{ "as a patch", WEAR_PATCH, TRUE },
{ "on the back", WEAR_BACK, 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 },
{ "floating", WEAR_FLOAT, TRUE },
{ "face", WEAR_FACE, TRUE },
{ "ear", WEAR_EAR, TRUE },
{ "lankle", WEAR_ANKLE_L, TRUE },
{ "rankle", WEAR_ANKLE_R, TRUE },
{ "clan", WEAR_CLAN, TRUE },
{ "relig", WEAR_RELIG, TRUE },
{ "patch", WEAR_PATCH, TRUE },
{ "back", WEAR_BACK, 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 },
{ NULL, 0, 0 } };

const struct flag_type weapon_type2[] =
{
{ "flaming", WEAPON_FLAMING, TRUE },
{ "frost", WEAPON_FROST, TRUE },
{ "vampiric", WEAPON_VAMPIRIC, TRUE },
{ "osmosis", WEAPON_OSMOSIS, TRUE }, //new flag by bree
		{ "sharp", WEAPON_SHARP, TRUE },
		{ "vorpal", WEAPON_VORPAL, TRUE },
		{ "twohands", WEAPON_TWO_HANDS, TRUE },
		{ "shocking", WEAPON_SHOCKING, TRUE },
		{ "poison", WEAPON_POISON, TRUE },
		{ "energydrain", WEAPON_ENERGYDRAIN, TRUE },
		// {  "elemental",   WEAPON_ELEMENTAL,        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 },
//     {  "res_aesir"     RES_AESIR,              TRUE   },
		//    {   "res_mythic"   RES_MYTHIC,             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 },
{ "shield", TO_SHIELDS, 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" },
{ shield_flags, "shield" } };

const struct class_focus_mod class_focus[MAX_CLASS] =
{ // CLASS_NAME, power, def, agil, tough, power, res, abi, def
  // TERT = 1, SEC = 2, PRI = 3
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //0
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //1
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //2
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //3
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //4
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //5
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //6
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //7
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //8
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //9
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //10
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //11
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //12
{ TERT, TERT, TERT, TERT, TERT, TERT, TERT, TERT }, //13
{ TERT, SEC,  TERT, TERT, PRI,  PRI,  SEC,  SEC  }, //forsaken
{ TERT, SEC,  TERT, TERT, PRI,	PRI,  SEC,  SEC  }, //conjurer
{ TERT, SEC,  TERT, TERT, PRI,	PRI,  SEC,  SEC  }, //archmage
{ TERT, PRI,  SEC,  PRI,  SEC,  SEC,  TERT, TERT }, //voodan/monk/saint
{ TERT, PRI,  SEC,  PRI,  SEC,  SEC,  TERT, TERT }, //voodan/monk/saint
{ TERT, PRI,  SEC,  PRI,  SEC,  SEC,  TERT, TERT }, //voodan/monk/saint
{ SEC,  PRI,  PRI,  SEC,  TERT, TERT, TERT, SEC  }, //assassin/ninja/bard
{ SEC,  PRI,  PRI,  SEC,  TERT, TERT, TERT, SEC  }, //assassin/ninja/bard
{ SEC,  PRI,  PRI,  SEC,  TERT, TERT, TERT, SEC  }, //assassin/ninja/bard
{ PRI,  SEC,  SEC,  PRI,  TERT, TERT, TERT, SEC  }, //highlander/swash/crusader
{ PRI,  SEC,  SEC,  PRI,  TERT, TERT, TERT, SEC  }, //highlander/swash/crusader
{ PRI,  SEC,  SEC,  PRI,  TERT, TERT, TERT, SEC  }, //highlander/swash/crusader
{ SEC,  PRI,  SEC,  PRI,  TERT, TERT, TERT, SEC  }, //darkpaladin/hunter/paladin
{ SEC,  PRI,  SEC,  PRI,  TERT, TERT, TERT, SEC  }, //darkpaladin/hunter/paladin
{ SEC,  PRI,  SEC,  PRI,  TERT, TERT, TERT, SEC  }, //darkpaladin/hunter/paladin
{ TERT, SEC,  TERT, PRI,  SEC,  SEC,  PRI,  TERT }, //warlock/alchemist/shaman
{ TERT, SEC,  TERT, PRI,  SEC,  SEC,  PRI,  TERT }, //warlock/alchemist/shaman
{ TERT, SEC,  TERT, PRI,  SEC,  SEC,  PRI,  TERT }, //warlock/alchemist/shaman
{ TERT, TERT, SEC,  PRI,  SEC,  PRI,  SEC,  TERT }, //fade/necro/banshee
{ TERT, TERT, SEC,  PRI,  SEC,  PRI,  SEC,  TERT }, //fade/necro/banshee
{ TERT, TERT, SEC,  PRI,  SEC,  PRI,  SEC,  TERT }, //fade/necro/banshee
};

/* const struct clan_titles clan_rank_table[] =
 {
 {
 {"<Wildthing>",   "<Freeman>",    "<Freewoman>"   }
 },
 {
 {"<Recruit>"    ,"<Recruit>"    ,"<Recruit>"      }
 },
 {
 {"<Acolyte>"     ,"<Acolyte>"    ,"<Acolyte>"     }
 },
 {
 {"<Adept>"       ,"<Adept>"      ,"<Adept>"       }
 },

 {
 {"<Officer>"     ,"<Officer>"    ,"<Officer>"     }
 },
 {
 {"<Lieutenant>"  ,"<Lieutenant>" ,"<Lieutenant>"  }
 },
 {
 {"<Vassal>"      ,"<Vassal>"     ,"<Vassal>"      }
 },
 {
 {"<Ambassador>"  ,"<Ambassador>" ,"<Ambassadress>"}
 },
 {
 {"<Magistrate>"  ,"<Magistrate>" ,"<Magistrate>"  }
 },
 {
 {"<Lord>"        ,"<Lord>"       ,"<Lady>"        }
 },
 {
 {"<Leader>"      ,"<Leader>"     ,"<Leaden>"      }
 },
 {
 {"<Patron>"      ,"<Patron>"     , "<Patron>"     }
 },
 {
 { NULL, NULL, NULL }
 }
 }; */