AwakeMUD-0.51Beta/area/
AwakeMUD-0.51Beta/doc/
AwakeMUD-0.51Beta/lib/
AwakeMUD-0.51Beta/lib/etc/
AwakeMUD-0.51Beta/lib/fixer_data/
AwakeMUD-0.51Beta/lib/misc/
AwakeMUD-0.51Beta/lib/plrobjs/
AwakeMUD-0.51Beta/lib/plrobjs/A-E/
AwakeMUD-0.51Beta/lib/plrobjs/K-O/
AwakeMUD-0.51Beta/lib/plrobjs/U-Z/
AwakeMUD-0.51Beta/lib/plrspells/A-E/
AwakeMUD-0.51Beta/lib/plrtext/A-E/
AwakeMUD-0.51Beta/lib/world/
AwakeMUD-0.51Beta/lib/world/mob/
AwakeMUD-0.51Beta/lib/world/obj/
AwakeMUD-0.51Beta/lib/world/qst/
AwakeMUD-0.51Beta/lib/world/shp/
AwakeMUD-0.51Beta/lib/world/wld/
AwakeMUD-0.51Beta/lib/world/zon/
/* ************************************************************************
*   File: constants.c                                   Part of CircleMUD *
*  Usage: Numeric and string contants used by the MUD                     *
*                                                                         *
*  All rights reserved.  See license.doc for complete information.        *
*                                                                         *
*  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
************************************************************************ */

#include "structs.h"
#include "awake.h"

char circlemud_version[] = {
"CircleMUD, version 3.00 beta patchlevel 9\r\n"};
char awakemud_version[] = {
"AwakeMUD, version 0.51 Beta\r\n"};


/* strings corresponding to ordinals/bitvectors in structs.h ***********/


/* (Note: strings for class definitions in class.c instead of here) */

const char *status_ratings[] =
{
  "Nonexistent",
  "Mortal",
  "Legend",
  "Builder",
  "Architect",
  "Manager",
  "Advisor",
  "Director",
  "President",
  "Owner",
  "\n"
};

const char *cyberware_names[] =
{
  "chipjack",                  // 0
  "datajack",
  "radio",
  "radio receiver",
  "commlink",
  "damper",                    // 5
  "high frequency",
  "low frequency",
  "flare compensation",
  "low-light",
  "thermographic",             // 10
  "cortex bomb",
  "memory",
  "datasoft link",
  "display link",
  "ActiveSoft",                // 15
  "DataSoft",
  "KnowSoft",
  "LinguaSoft",
  "hand razors",
  "muscle replacement",        // 20
  "spur",
  "smartlink",
  "dermal plating",
  "air filtration",
  "blood filtration",          // 25
  "ingestion filtration",
  "limb",
  "skillwires",
  "bone lacing",
  "wired/boosted reflexes",            // 30
  "magnification",
  "\n"
};

const char *bioware_names[] =
{
  "platelet factory",          //0
  "symbiotes",
  "orthoskin",
  "tailored pheromones",
  "adrenal pump",
  "suprathyroid gland",        //5
  "cerebral booster",
  "pain editor",
  "synaptic accelerator",
  "enhanced articulation",
  "muscle augmentation",       //10
  "\n"
};

const char *patch_names[] =
{
  "antidote",
  "stimulant",
  "tranq",
  "trauma"
};

const char *gear_name[] =
{
  "medical",
  "electronic",
  "cyberdeck",
  "\n"
};

const char *foci_types[] =
{
  "specific spell",
  "spell category",
  "spirit",
  "power",
  "spell lock",
  "weapon",
  "\n"
};

const char *lifestyles[] =
{
  "Low",
  "Middle",
  "High",
  "Luxury",
  "\n"
};

const char *dist_name[] =
{
  "close by",
  "not far off",
  "in the distance",
  "almost out of sight"
};

const char *wound_arr[] =
{
  "None",
  "L",
  "M",
  "S",
  "D",
  "BUGD1",
  "BUGD2",
  "BUGD3",
  "BUGD4",
  "BUGD5"
};

const char *wound_name[] =
{
  "None",
  "Light",
  "Moderate",
  "Serious",
  "Deadly",
  "\n",
  "BUGDeadly2",
  "BUGDeadly3",
  "BUGDeadly4",
  "BUGDeadly5"
};

int damage_array[] =
{
  0,
  1,
  3,
  6,
 10,
};

const char *composition_names[] =
{
  "other",
  "plastic",
  "iron",
  "silver",
  "\n"
};

// names of materials objects may be made out of
const char *material_names[] =
{
  "paper",
  "wood",
  "glass",
  "fabric",
  "leather",
  "brick",            // 5
  "plastic",
  "adv. plastics",
  "metal",
  "orichalcum",
  "electronics",      // 10
  "computers",
  "toxic wastes",
  "organic",
  "stone",
  "ceramic",          // 15
  "concrete",
  "\n"
};

// resistance target numbers by material type
int material_ratings[] =
{
  3,
  3,
  3,
  3,
  4,
  5,
  5,
  8,
  8,
  8,
  8,
  10,
  10,
  2,
  3,
  5,
  4
};

const char *barrier_names[] =
{
  "Standard glass",
  "Cheap material",
  "Average material/ballistic glass",
  "Heavy material",
  "Reinforced/armored glass",
  "Structural material",
  "Heavy structural material",
  "Armored/reinforced material",
  "Hardened material",
  "\n"
};

int barrier_ratings[] =
{
  2,
  3,
  4,
  6,
  8,
  12,
  16,
  24,
  32
};

// this is an array of odds for one 6-sided die rolling a particular target #
struct target_type target_array[55] =
{
  { 0, 0 },             // 0
  { 1, 1 },
  { 5, 6 },
  { 4, 6 },
  { 3, 6 },
  { 2, 6 },
  { 1, 6 },             // 6
  { 1, 6 },
  { 5, 36},
  { 1, 9 },
  { 1, 12},
  { 1, 18},
  { 1, 36},             // 12
  { 1, 36},
  { 5, 216},
  { 1, 54},
  { 1, 72},
  { 1, 108},
  { 1, 216},            // 18
  { 1, 216},
  { 5, 1296},
  { 1, 324},
  { 1, 432},
  { 1, 648},
  { 1, 1296},           // 24
  { 1, 1296},
  { 1, 1555},
  { 1, 1944},
  { 1, 2592},
  { 1, 3888},
  { 1, 7776},           // 30
  { 1, 7776},
  { 1, 9331},
  { 1, 11664},
  { 1, 15552},
  { 1, 23328},
  { 1, 46656},          // 36
  { 1, 46656},
  { 1, 55987},
  { 1, 69984},
  { 1, 93312},
  { 1, 139968},
  { 1, 279936},         // 42
  { 1, 279936},
  { 1, 335923},
  { 1, 419904},
  { 1, 559872},
  { 1, 839808},
  { 1, 1679616},                // 48
  { 1, 1679616},
  { 1, 2015539},
  { 1, 2519424},
  { 1, 3359232},
  { 1, 5038848},
  { 1, 10077696}                // 54
};

/* cardinal directions */
const char *dirs[] =
{
  "north",
  "ne",
  "east",
  "se",
  "south",
  "sw",
  "west",
  "nw",
  "up",
  "down",
  "matrix",
  "\n"
};

const char *exitdirs[] =
{
  "n",
  "ne",
  "e",
  "se",
  "s",
  "sw",
  "w",
  "nw",
  "u",
  "d",
  "M",
  "\n"
};

const char *lookdirs[] =
{
  "north",
  "east",
  "south",
  "west",
  "ne",
  "se",
  "sw",
  "nw",
  "up",
  "down",
  "matrix",
  "\n"
};

int convert_look[] =
{
  0,
  2,
  4,
  6,
  1,
  3,
  5,
  7,
  8,
  9,
  10,
};

int convert_dir[] =
{
  1,
  7,
  2,
  8,
  3,
  9,
  4,
  10,
  5,
  6,
  0
};

const char *fulldirs[] =
{
  "north",
  "northeast",
  "east",
  "southeast",
  "south",
  "southwest",
  "west",
  "northwest",
  "up",
  "down",
  "matrix",
  "\n"
};

const char *thedirs[] =
{
  "the north",
  "the northeast",
  "the east",
  "the southeast",
  "the south",
  "the southwest",
  "the west",
  "the northwest",
  "above",
  "below",
  "the matrix",
  "\n"
};


/* ROOM_x */
const char *room_bits[] = {
  "DARK",
  "DEATH",
  "!MOB",
  "INDOORS",
  "PEACEFUL",
  "SOUNDPROOF",
  "!TRACK",
  "!MAGIC",
  "TUNNEL",
  "PRIVATE",
  "BLDROOM",
  "HOUSE",
  "HCRSH",
  "ATRIUM",
  "OLC",
  "*",                          /* BFS MARK */
  "LOW_LIGHT",
  "MATRIX",
  "CRIME_OK",
  "LIBRARY",
  "LODGE",
  "FALL",
  "MGRROOM",
  "DRCTROOM",
  "PRESROOM",
  "!QUIT",
  "\n"
};


/* EX_x */
const char *exit_bits[] = {
  "DOOR",
  "CLOSED",
  "LOCKED",
  "PICKPROOF",
  "DESTROYED",
  "HIDDEN",
  "\n"
};


/* SECT_ */
const char *sector_types[] = {
  "Inside",
  "City",
  "Field",
  "Forest",
  "Hills",
  "Mountains",
  "Water (Swim)",
  "Water (No Swim)",
  "Underwater",
  "Flying",
  "Blue Node",
  "Green Node",
  "Orange Node",
  "Red Node",
  "Black Node",
  "\n"
};


/* SEX_x */
const char *genders[] =
{
  "Neutral",
  "Male",
  "Female",
  "\n"
};

/* NPC classes */
const char *npc_classes[] =
{
  "Other",
  "Spirit",
  "Humanoid",
  "Animal",
  "Dragon",
  "Access IC",
  "Barrier IC",
  "Scramble IC",
  "Blaster IC",
  "Killer IC",
  "Tar Baby IC",
  "Tar Pit IC",
  "Trace & Report IC",
  "Trace & Dump IC",
  "Trace & Burn IC",
  "Black IC",
  "\n"
};

const char *shape_forms[] = {
  "bat",
  "large bear",
  "bear",
  "housecat",
  "wildcat",
  "deer",
  "large dog",
  "dog",
  "elephant",
  "fox",
  "goat",
  "horse",
  "leopard",
  "rat",
  "rhinoceros",
  "seal",
  "large shark",
  "shark",
  "tiger",
  "wolf",
  "\n"
};

const char *spell_categories[] = {
  "Combat",
  "Detection",
  "Health",
  "Illusion",
  "Manipulation",
  "\n"
};

const char *spirits[] = {
  "NULL",
  "Air elemental",
  "Earth elemental",
  "Fire elemental",
  "Water elemental",
  "City spirit",       // 5
  "Hearth spirit",
  "Field spirit",
  "Desert spirit",
  "Forest spirit",
  "Mountain spirit",   // 10
  "Prairie spirit",
  "Mist spirit",
  "Storm spirit",
  "Lake spirit",
  "River spirit",      // 15
  "Sea spirit",
  "Swamp spirit",
  "\n"
};

const char *spirit_powers[] = {
  "accident",
  "alienate",
  "aura",
  "bind",
  "breathe",
  "conceal",
  "confuse",
  "engulf",
  "fear",
  "find",
  "guard",
  "manifest",
  "project",
  "\n"
};

/* POS_x */
const char *position_types[] = {
  "Dead",
  "Mortally wounded",
  "Incapacitated",
  "Stunned",
  "Sleeping",
  "Resting",
  "Sitting",
  "Fighting",
  "Standing",
  "\n"
};

const char *attack_types[] = {
  "Hit",
  "Sting",
  "Whip",
  "Slash",
  "Bite",
  "Bludgeon",
  "Crush",
  "Pound",
  "Claw",
  "Maul",
  "Thrash",
  "Pierce",
  "Punch",
  "Stab",
  "Taser",
  "Shuriken",
  "Throwing knife",
  "Arrow/bolt",
  "Hand Grenade",
  "Grenade Launcher",
  "Rocket",
  "Pistol",
  "Blast",
  "Rifle",
  "Shotgun",
  "Machine Gun",
  "Cannon",
  "Bifurcate",
  "\n"
};

const char *matrix_modes[] = {
  "Normal",
  "Yellow Alert",
  "Red Alert",
  "Offline",
  "Shut down",
  "\n"
};

/* PLR_x */
const char *player_bits[] = {
  "KILLER",
  "THIEF",
  "FROZEN",
  "DONTSET",
  "NEWBIE",
  "JUST_DIED",
  "CSH",
  "CRYO",
  "SITEOK",
  "!SHOUT",
  "!TITLE",
  "DELETED",
  "!DELETE",
  "!WIZLIST",
  "!STAT",
  "LOADRM",
  "INVST",
  "GUEST",
  "QUESTER",
  "OLC",
  "MATRIX",
  "PERCEIVE",
  "PROJECT",
  "SWITCHED",
  "WRITING",
  "MAILING",
  "EDITING",
  "SPELL-CREATE",
  "CUSTOMIZE",
  "!SNOOP",
  "\n"
};

const char *power_level[] = {
  "Extremely Low",
  "Very Low",
  "Low",
  "Moderate",
  "Medium-High",
  "High",
  "Very High",
  "Extremely High",
  "Deadly",
  "\n"
};

/* MOB_x */
const char *action_bits[] = {
  "SPEC",
  "SENTINEL",
  "SCAVENGER",
  "ISNPC",
  "AWARE",
  "AGGR",
  "STAY-ZONE",
  "WIMPY",
  "AGGR_ORK",
  "AGGR_ELF",
  "AGGR_DWARF",
  "MEMORY",
  "HELPER",
  "!CHARM",
  "DUAL",
  "!EXPLODE",
  "AGGR_TROLL",
  "!BLIND",
  "ASTRAL",
  "GUARD",
  "AGGR_HUMAN",
  "SNIPER",
  "PRIVATE",
  "\n"
};

/* PRF_x */
const char *preference_bits[] = {
  "BRIEF",
  "COMPACT",
  "AUTOEX",
  "!FIGHT",
  "!MOVE",
  "DEAF",
  "!TELL",
  "!RADIO",
  "!NEWBIE",
  "!REP",
  "!WIZ",
  "PKER",
  "QUEST",
  "AFK",
  "C1",
  "C2",
  "!HASS",
  "RMFLG",
  "LIGHT",
  "CONN",
  "DEATH",
  "MISC",
  "WIZ",
  "SYS",
  "ZONE",
  "MSP",
  "ROLLS",
  "\n"
};

/* AFF_x */
const char *affected_bits[] =
{
  "Blind",
  "Invis",
  "Det-align",
  "Det-invis",
  "Det-magic",
  "Sense-life",
  "Waterwalk",
  "Group",
  "Curse",
  "Infravision",
  "Poison",
  "Sleep",
  "No-Track",
  "LL-eyes",
  "Laser-sight",
  "Sneak",
  "Hide",
  "Vision x1",
  "Charm",
  "ACTION",
  "Vision x2",
  "Vision x3",
  "COUNTERATTACK",
  "Stabilize",
  "Petrify",
  "Imp_invis",
  "\n"
};

/* CON_x */
const char *connected_types[] = {
  "Playing",                                    // 0
  "Disconnecting",
  "Get name",
  "Confirm name",
  "Get password",
  "Get new PW",                                 // 5
  "Confirm new PW",
  "CharGen",
  "Reading MOTD",
  "Main Menu",
  "Get descript.",                              // 10
  "Changing PW 1",
  "Changing PW 2",
  "Changing PW 3",
  "Self-Delete 1",
  "Self-Delete 2",                              // 15
  "Quit menu",
  "Changing PW Q1",
  "Changing PW Q2",
  "Changing PW Q3",
  "Self-Delete Q1",                             // 20
  "Self-Delete Q2",
  "Creating Spell",
  "Persona Editing",
  "Astral Editing",
  "Item Editing",                               // 25
  "Room Editing",
  "Mob Editing",
  "Quest Editing",
  "Shop Editing",
  "Zone Editing",                               // 30
  "Ident Conning",
  "Ident conned",
  "Ident reading",
  "Ident read",
  "Asking name",
  "\n"
};

/* WEAR_x - for eq list */
const char *where[] = {
  "<used as light>      ",
  "<worn on finger>     ",
  "<worn on finger>     ",
  "<worn around neck>   ",
  "<worn around neck>   ",
  "<worn on body>       ",
  "<worn on head>       ",
  "<worn on legs>       ",
  "<worn on feet>       ",
  "<worn on hands>      ",
  "<worn on arms>       ",
  "<worn as shield>     ",
  "<worn about body>    ",
  "<worn about waist>   ",
  "<worn around wrist>  ",
  "<worn around wrist>  ",
  "<wielded>            ",
  "<held>               ",
  "<eyes>               ",
  "<ear>                ",
  "<patch>              "
};

const char *hands[] = {
  "<right hand>         ",
  "<left hand>          ",
  "<both hands>         ",
};

const char *wielding_hands[] = {
  "<right hand (w)>     ",
  "<left hand (w)>      ",
  "<both hands>         ",
};

const char *short_where[] = {
  "LIGHT",
  "R_FINGER",
  "L_FINGER",
  "NECK1",
  "NECK2",
  "BODY",
  "HEAD",
  "LEGS",
  "FEET",
  "HANDS",
  "ARMS",
  "SHIELD",
  "ABOUT",
  "WAIST",
  "R_WRIST",
  "L_WRIST",
  "WIELD",
  "HELD",
  "EYES",
  "EAR",
  "PATCH"
};

/* WEAR_x - for stat */
const char *equipment_types[] = {
  "Used as light",
  "Worn on right finger",
  "Worn on left finger",
  "First worn around Neck",
  "Second worn around Neck",
  "Worn on body",
  "Worn on head",
  "Worn on legs",
  "Worn on feet",
  "Worn on hands",
  "Worn on arms",
  "Worn as shield",
  "Worn about body",
  "Worn around waist",
  "Worn around right wrist",
  "Worn around left wrist",
  "Wielded",
  "Held",
  "Eyes",
  "Ear",
  "Patch",
  "\n"
};


/* ITEM_x (ordinal object types) */
const char *item_types[] = {
  "UNDEFINED",
  "Light",
  "Scroll",
  "Wand",
  "Staff",
  "Weapon",
  "Bow/X-bow",
  "Arrow/bolt",
  "Treasure",
  "Armor",
  "Potion",
  "Worn",
  "Other",
  "Trash",
  "DocWagon",
  "Container",
  "Radio",
  "Liq Container",
  "Key",
  "Food",
  "Money",
  "Phone",
  "Bioware",
  "Fountain",
  "Cyberware",
  "Cyberdeck",
  "Program",
  "Gun Clip",
  "Gun Accessory",
  "Spell Formula",
  "Kit",
  "Focus",
  "Patch",
  "Climbing gear",
  "Quiver",
  "Decking Accessory",
  "\n"
};

/* ITEM_WEAR_ (wear bitvector) */
const char *wear_bits[] = {
  "TAKE",
  "FINGER",
  "NECK",
  "BODY",
  "HEAD",
  "LEGS",
  "FEET",
  "HANDS",
  "ARMS",
  "SHIELD",
  "ABOUT",
  "WAIST",
  "WRIST",
  "WIELD",
  "HOLD",
  "EYES",
  "EAR",
  "PATCH",
  "\n"
};

/* ITEM_x (extra bits) */
const char *extra_bits[] = {
  "GLOW",
  "HUM",
  "!RENT",
  "!DONATE",
  "!INVIS",
  "INVISIBLE",
  "MAGIC",
  "!DROP",
  "BLESS",
  "!SELL",
  "CORPSE",
  "GOD_ONLY",
  "TWO_HANDS",
  "STARTER",
  "VOLATILE",
  "IMMLOAD",
  "\n"
};

/* APPLY_x */
const char *apply_types[] = {
  "Nothing",
  "Body",
  "Quickness",
  "Strength",
  "Charisma",
  "Intelligence",
  "Willpower",
  "Essence",
  "Magic",
  "Reaction",
  "Age",
  "Weight",
  "Height",
  "Max Mental",
  "Max Physical",
  "Nothing",
  "Ballistic",
  "Impact",
  "Astral Pool",
  "Nothing",
  "Combat Pool",
  "Hacking Pool",
  "Magic Pool",
  "Init Dice",
  "Target Numbers",
  "Nothing",
  "Nothing",
  "Nothing",
  "\n"
};

const char *room_functions[] = {
  "None",
  "CPU",
  "Datastore",
  "Input/Output",
  "SPU",
  "System Access",
  "Slave",
  "\n"
};

const char *program_types[] = {
  "None",
  "Bod",
  "Evasion",
  "Masking",
  "Sensor",
  "Attack",
  "Slow",
  "Medic",
  "Mirrors",
  "Shield",
  "Smoke",
  "Analyze",
  "Decrypt",
  "Deception",
  "Relocate",
  "Sleaze",
  "\n",
};

const char *file_types[] = {
  "NULL",
  "Personal",
  "Media",
  "Police",
  "Transaction",
  "Bank account",
  "Business",
  "Underworld",
  "\n",
};

const char *file_ratings[] = {
  "Public access",
  "Low",
  "Normal",
  "High",
  "Private",
  "Classified",
  "Highly classified",
  "Denied existence",
  "\n",
};

const char *log_types[] = {
  "CONNLOG",
  "DEATHLOG",
  "MISCLOG",
  "WIZLOG",
  "SYSLOG",
  "ZONELOG",
  "\n",
};

/* CONT_x */
const char *container_bits[] = {
  "CLOSEABLE",
  "PICKPROOF",
  "CLOSED",
  "LOCKED",
  "\n",
};


/* LIQ_x */
const char *drinks[] =
{
  "water",
  "beer",
  "wine",
  "ale",
  "dark ale",
  "whisky",
  "lemonade",
  "firebreather",
  "local speciality",
  "cola",
  "milk",
  "tea",
  "coffee",
  "blood",
  "salt water",
  "clear water",
  "tequila",
  "hot sauce",
  "\n"
};


/* other constants for liquids ******************************************/


/* one-word alias for each drink */
const char *drinknames[] =
{
  "water",
  "beer",
  "wine",
  "ale",
  "ale",
  "whisky",
  "lemonade",
  "firebreather",
  "local",
  "cola",
  "milk",
  "tea",
  "coffee",
  "blood",
  "salt",
  "water",
  "tequila",
  "hot sauce",
  "\n"
};


/* effect of drinks on hunger, thirst, and drunkenness -- see values.doc */
int drink_aff[][3] = {
  {0, 1, 10},
  {2, 2, 5},
  {2, 2, 5},
  {2, 2, 5},
  {1, 2, 5},
  {2, 1, 4},
  {0, 1, 8},
  {3, 0, 0},
  {3, 3, 3},
  {0, 3, -2},
  {0, 3, 6},
  {0, 1, 6},
  {0, 1, 6},
  {0, 2, -1},
  {0, 1, -2},
  {0, 0, 13},
  {5, 0, 0},
  {0, 0, -8}
};


/* color of the various drinks */
const char *color_liquid[] =
{
  "clear",
  "brown",
  "clear",
  "brown",
  "dark",
  "golden",
  "red",
  "green",
  "clear",
  "dark brown",
  "white",
  "brown",
  "black",
  "red",
  "clear",
  "crystal clear",
  "clear",
  "blazing red"
};


/* level of fullness for drink containers */
const char *fullness[] =
{
  "less than half ",
  "about half ",
  "more than half ",
  ""
};

struct str_app_type str_app[51] = {
   { 0, 0,   0,  0 },
   { 1, 1,  30,  3 },
   { 2, 2,  60,  6 },
   { 3, 3,  90,  9 },
   { 4, 4, 120, 12 },
   { 5, 5, 150, 15 },
   { 6, 6, 180, 18 },
   { 7, 7, 210, 21 },
   { 8, 8, 240, 24 },
   { 9, 9, 270, 27 },
   { 10, 10, 300, 30 },
   { 11, 11, 330, 33 },
   { 12, 12, 360, 36 },
   { 13, 13, 390, 39 },
   { 14, 14, 420, 42 },
   { 15, 15, 450, 45 },
   { 16, 16, 480, 48 },
   { 17, 17, 510, 51 },
   { 18, 18, 540, 54 },
   { 19, 19, 570, 57 },
   { 20, 20, 600, 60 },
   { 21, 21, 630, 63 },
   { 22, 22, 660, 66 },
   { 23, 23, 690, 69 },
   { 24, 24, 720, 72 },
   { 25, 25, 750, 75 },
   { 26, 26, 780, 78 },
   { 27, 27, 810, 81 },
   { 28, 28, 840, 84 },
   { 29, 29, 870, 87 },
   { 30, 30, 900, 90 },
   { 31, 31, 930, 93 },
   { 32, 32, 960, 96 },
   { 33, 33, 990, 99 },
   { 34, 34, 1020, 102 },
   { 35, 35, 1050, 105 },
   { 36, 36, 1080, 108 },
   { 37, 37, 1110, 111 },
   { 38, 38, 1140, 114 },
   { 39, 39, 1170, 117 },
   { 40, 40, 1200, 120 },
   { 41, 41, 1230, 123 },
   { 42, 42, 1250, 125 },
   { 43, 43, 1280, 128 },
   { 44, 44, 1310, 131 },
   { 45, 45, 1340, 134 },
   { 46, 46, 1370, 137 },
   { 47, 47, 1400, 140 },
   { 48, 48, 1430, 143 },
   { 49, 49, 1470, 147 },
   { 50, 50, 1500, 150 }
};

const char *spells[] =
{
  "!RESERVED!",                 /* 0 - reserved */
  "X",
  "XX",
  "analyze device",
  "anti bullet barrier",
  "anti spell barrier",      // 5
  "antidote",
  "armor",
  "chaos",
  "chaotic world",
  "clairvoyance",            // 10
  "clout",
  "combat sense",
  "confusion",
  "cure disease",
  "death touch",             // 15
  "detect alignment",
  "detect invisibility",
  "detect magic",
  "heal",
  "hellblast",               // 20
  "improved invisibility",
  "influence",
  "invisibility",
  "manaball",
  "manablast",               // 25
  "mana bolt",
  "mana cloud",
  "mana dart",
  "mana missile",
  "overstimulation",         // 30
  "petrify",
  "powerball",
  "powerblast",
  "power bolt",
  "power cloud",             // 35
  "power dart",
  "power missile",
  "ram",
  "ram touch",
  "resist pain",             // 40
  "shape change",
  "stabilize",
  "stunball",
  "stunblast",
  "stun bolt",               // 45
  "stun cloud",
  "stun missile",
  "stun touch",
  "toxic wave",
  "power shaft",
  "power burst",
  "mana shaft",
  "mana burst",
  "stun shaft",
  "stun burst",
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    // 60
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    // 65
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    // 70
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    // 75
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    // 80
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    //85
  "!UNUSED!",
  "analyze magic",
  "analyze person",
  "decrease attribute",
  "element ball",            // 90
  "element bolt",
  "element cloud",
  "element dart",
  "element missile",
  "increase attribute",      // 95
  "increase reflexes",
  "light",
  "poison",
  "teleport",
  "stealth",    /* 100 */
  "athletics",
  "armed combat",
  "edged weapons",
  "pole arms",
  "whips & flails",
  "clubs",
  "unarmed combat",
  "grapple",
  "cyber implants",
  "firearms",            /* 110 */
  "pistols",
  "rifles",
  "shotguns",
  "assault rifles",
  "sub-machine guns",
  "grenade launchers",
  "tasers",
  "gunnery",
  "machine guns",
  "missile launchers",     /* 120 */
  "assault cannons",
  "artillery",
  "projectiles",
  "bows",
  "crossbows",
  "throwing weapons",
  "non-aerodynamic",
  "aerodynamic",
  "demolitions",
  "computers",             /* 130 */
  "electronics",
  "computer theory",
  "biotech",
  "medical",
  "cybersurgery",
  "biology",
  "leadership",
  "interrogation",
  "negotiation",
  "magical theory",       /* 140 */
  "conjuring",
  "sorcery",
  "shamanic studies",
  "corporate etiquette",
  "media etiquette",
  "street etiquette",
  "tribal etiquette",
  "elf etiquette",
  "backstab",
  "bash",                 /* 150 */
  "hide",
  "kick",
  "pick lock",
  "punch",
  "rescue",
  "sneak",
  "steal",
  "track",
  "!UNUSED!",
  "climbing",             /* 160 */
  "astral perception",
  "combat sense",
  "increased reflexes",
  "killing hands",
  "pain resistance",       /* 165 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 170 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 175 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 180 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 185 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 190 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 195 */
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!",    /* 200 */
  "identify",                   /* 201 */
  "fire breath",
  "gas breath",
  "frost breath",
  "acid breath",
  "lightning breath",
  "\n"                          /* the end */
};

const char *spell_wear_off_msg[] = {
  "RESERVED DB.CC",             /* 0 */
  "!X!",                        /* 1 */
  "!XX!",
  "!Analyze Device!",
  "You feel your shimmer of protection dissolve.",
  "You feel more vulnerable to magical attacks.",               /* 5 */
  "!Antidote!",
  "You feel your skin soften.",
  "Chaos wears off.",
  "Chaotic world wears off.",
  "!Clairvoyance!",                                   // 10
  "!Clout!",
  "The awareness and tension recede.",
  "You feel less confused.",
  "!Cure disease!",
  "!Death touch!",                                    // 15
  "You no longer see creatures' auras.",
  "You are no longer aware of essence.",
  "You feel less in touch with the astral plane",
  "!Heal!",
  "!Hellblast!",                                      // 20
  "The invisibility wears off.",
  "You feel in control of yourself.",
  "The invisibility wears off.",
  "!Manaball!",
  "!Manablast!",                                      // 25
  "!Mana bolt!",
  "!Mana cloud!",
  "!Mana dart!",
  "!Mana missile!",
  "!Overstimulation!",                                // 30
  "Your muscles regain their flexibility.",
  "!Powerball!",
  "!Powerblast!",
  "!Power bolt!",
  "!Power cloud!",                                    // 35
  "!Power dart!",
  "!Power missile!",
  "!Ram!",
  "!Ram touch!",
  "You no longer resist pain.",                       // 40
  "Your body returns to its natural form.",
  "!Stabilize!",
  "!Stunball!",
  "!Stunblast!",
  "!Stun bolt!",                                      // 45
  "!Stun cloud!",
  "!Stun missile!",
  "!Stun touch!",
  "!Toxic wave!",
  "!UNUSED!",                                         // 50
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 55
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 60
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 65
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 70
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 75
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 80
  "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", "!UNUSED!", // 85
  "!UNUSED!",
  "!Analyze magic!",
  "!Analyze person!",
  "You feel more in control of yourself.",
  "!Element ball!",                                   // 90
  "!Element bolt!",
  "!Element cloud!",
  "!Element dart!",
  "!Element missile!",
  "You feel a magical presense depart your being.",   // 95
  "Your enhanced reflexes return to normal.",
  "The room seems dimmer.",
  "The sickness wears off.",
  "!Teleport!"
};

int rev_dir[] =
{
  4,
  5,
  6,
  7,
  0,
  1,
  2,
  3,
  9,
  8
};

const char *weekdays[7] = {
  "Mon",
  "Tue",
  "Wed",
  "Thu",
  "Fri",
  "Sat",
  "Sun"
};

const char *month_name[12] = {
  "January",
  "February",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December"
};