/
ScryMUD/mud/
ScryMUD/mud/grrmud/Boards/
ScryMUD/mud/grrmud/Help/
ScryMUD/mud/grrmud/Pfiles/
ScryMUD/mud/grrmud/PlayerSacks/
ScryMUD/mud/grrmud/PlayerShops/
ScryMUD/mud/grrmud/help_filter/
ScryMUD/mud/hegemon/
ScryMUD/mud/hegemon/data/
ScryMUD/mud/hegemon/data/help/battle/
ScryMUD/mud/hegemon/data/help/client/
ScryMUD/mud/hegemon/data/help/communications/
ScryMUD/mud/hegemon/data/help/skills/
ScryMUD/mud/hegemon/data/help/spells/
ScryMUD/mud/include/
ScryMUD/mud/lib/
ScryMUD/mud/lib/bitfield/
ScryMUD/mud/lib/log/
ScryMUD/mud/lib/string2/
// $Id: const.h,v 1.17.2.18 2000/06/28 02:07:32 aasen Exp $
// $Revision: 1.17.2.18 $  $Author: aasen $ $Date: 2000/06/28 02:07:32 $

//
//ScryMUD Server Code
//Copyright (C) 1998  Ben Greear
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// To contact the Author, Ben Greear:  greear@cyberhighway.net, (preferred)
//                                     greearb@agcs.com
//

///************ this is to save repetitive typing ***********///
#ifndef BEN_CONST_INCLUDE
#define BEN_CONST_INCLUDE

#ifdef USEMYSQL
#include <mysql/mysql.h>
#endif
#include <list2.h>
#include <rb_tree.h>
#include <bitfield.h>
#include <string2.h>
#include <LogStream.h>
#include <PtrArray.h>
#include "ServerConfig.h"

enum proc_types {
   PROCTYPE_GIVE,
   PROCTYPE_BOW,
   PROCTYPE_CURSE,
   PROCTYPE_SAY
};

enum shop_data_flags {
   SHOPFLAG_BUY0,
   SHOPFLAG_SELL0,
   SHOPFLAG_OFFER0,
   SHOPFLAG_PLAYER_OWNED,
   SHOPFLAG_NULL1, // 5
   SHOPFLAG_NULL2, // 6
   SHOPFLAG_NULL3, // 7
   SHOPFLAG_NULL4, // 8
   SHOPFLAG_NULL5, // 9
   SHOPFLAG_NULL6, // 10
   SHOPFLAG_NULL7, // 11
   SHOPFLAG_NULL8, // 12
   SHOPFLAG_NULL9, // 13
   SHOPFLAG_NULL10, // 14
   SHOPFLAG_NULL11, // 15
   SHOPFLAG_NULL12, // 16
   SHOPFLAG_NULL13, // 17
   SHOPFLAG_NULL14, // 18
   SHOPFLAG_NULL15, // 19
   SHOPFLAG_NULL16, // 20
   SHOPFLAG_NULL17, // 21
   SHOPFLAG_NULL18, // 22
   SHOPFLAG_NULL19, // 23
   SHOPFLAG_NULL20, // 24
   SHOPFLAG_NULL21, // 25
   SHOPFLAG_NULL22, // 26
   SHOPFLAG_NULL23, // 27
   SHOPFLAG_NULL24, // 28
   SHOPFLAG_NULL25, // 29
   SHOPFLAG_NULL26, // 30
   SHOPFLAG_NULL27, // 31
   SHOPFLAG_NULL28, // 32
   SHOPFLAG_NULL29, // 33
   SHOPFLAG_NULL30, // 34
   SHOPFLAG_NULL31, // 35
   SHOPFLAG_NULL32, // 36
   SHOPFLAG_NULL33, // 37
   SHOPFLAG_NULL34, // 38
   SHOPFLAG_NULL35, // 39
   SHOPFLAG_NON_WEAPON,
   SHOPFLAG_SLASH,
   SHOPFLAG_SMASH,
   SHOPFLAG_PIERCE,
   SHOPFLAG_WHIP,
   SHOPFLAG_NEEDS_AMMO,
   SHOPFLAG_DART_THROWER,
   SHOPFLAG_BOW,
   SHOPFLAG_DART,
   SHOPFLAG_ARROW,
   SHOPFLAG_JUNK,
   SHOPFLAG_WAND,
   SHOPFLAG_POTION,
   SHOPFLAG_SCROLL,
   SHOPFLAG_CONTAINER,
   SHOPFLAG_COINS,
   SHOPFLAG_ARMOR,
   SHOPFLAG_WEAPON,
   SHOPFLAG_LIGHT_SOURCE,
   SHOPFLAG_CANTEEN,
   SHOPFLAG_LIQUID,
   SHOPFLAG_FOOD,
   SHOPFLAG_BOAT,
   SHOPFLAG_HAS_SPEC_PROC_DATA,
   SHOPFLAG_TOOLBOX,
   SHOPFLAG_CAULDRON,
   SHOPFLAG_PEN,
   SHOPFLAG_CONSTRUCT_COMPONENT,
   SHOPFLAG_CONCOCT_COMPONENT,
   SHOPFLAG_PARCHMENT,
   SHOPFLAG_NULL36,
   SHOPFLAG_NULL37,
   SHOPFLAG_HERB,
   SHOPFLAG_VEND_MACHINE
};

enum crit_flags {
   CRITFLAG_CAN_SEE_INV,
   CRITFLAG_USING_LIGHT,
   CRITFLAG_NULL1,
   CRITFLAG_IS_FLYING,
   CRITFLAG_HAS_BOAT,
   CRITFLAG_CAN_CLIMB,
   CRITFLAG_GOSSIPS,
   CRITFLAG_YELLS,
   CRITFLAG_GRATZ,
   CRITFLAG_AUCTIONS,
   CRITFLAG_SHOUTS,
   CRITFLAG_SAYS,
   CRITFLAG_TELLS,
   CRITFLAG_WIZNETS,
   CRITFLAG_IS_PARALYZED,
   CRITFLAG_IS_PERM_SLEEPED,
   CRITFLAG_IS_DUAL_WIELDING,
   CRITFLAG_IS_SNEAK,
   CRITFLAG_IN_USE,
   CRITFLAG_CAN_DIVE,
   CRITFLAG_SPELL_TESTED_YET,
   CRITFLAG_IS_BLOCKED,
   CRITFLAG_IS_HIDE,
   CRITFLAG_IS_TAILING,
   CRITFLAG_NOT_COMPLETE,
   CRITFLAG_ALREADY_HURLED
};

enum pc_data_flags {
   PCFLAG_FROZEN,
   PCFLAG_GAGGED,
   PCFLAG_HAS_IMM_DATA,
   PCFLAG_CLOAKED,
   PCFLAG_TANK_GRAPH,
   PCFLAG_USING_CLIENT,
   PCFLAG_AUTOEXIT,
   PCFLAG_NO_HASSLE,
   PCLFAG_BRIEF,
   PCFLAG_AUTOSPLIT,
   PCFLAG_DO_PROMPT,
   PCFLAG_IS_BUILDER,
   PCFLAG_AUTOLOOT,
   PCFLAG_OLC_REDO,
   PCFLAG_EXTRA_INFO,
   PCFLAG_CR_BEHIND,
   PCFLAG_DO_CARRIAGE_RETURN,
   PCFLAG_IS_BLOCKING_DOOR,
   PCFLAG_CAN_DET_MAGIC,
   PCFLAG_DETECT_INVENTORY,
   PCFLAG_SHOW_VNUMS,
   PCFLAG_HAS_POOFIN_POOFOUT_MSG,
   PCFLAG_PAGE_OUTPUT,
   PCFLAG_IN_PAGE_BREAK_MODE,
   PCFLAG_NO_WIZCHAT,
   PCFLAG_HAS_COLORS,
   PCFLAG_USE_COLOR,
   PCFLAG_HAS_LANGUAGE_CHOICE,
   PCFLAG_NO_SHOW_MOB_ENTRY,
   PCFLAG_NO_BEEP,
   PCFLAG_IS_REMORT,
   PCFLAG_HAS_SACRIFICED 
};

enum spec_flag {
   SPECFLAG_NULL1,
   SPECFLAG_SHOPKEEPER,
   SPECFLAG_TEACHER,
   SPECFLAG_LET_SAME_CLASS_PASS,
   SPECFLAG_LET_SAME_RACE_PASS,
   SPECFLAG_HAS_MOB_GIVE_PROC,
   SPECFLAG_HAS_MOB_SAY_PROC,
   SPECFLAG_HAS_MOB_BOW_PROC,
   SPECFLAG_HAS_MOB_CURSE_PROC,
   SPECFLAG_PROC_WITH_SAME_RACE,
   SPECFLAG_PROC_WITH_SAME_ALIGN,
   SPECFLAG_PROC_WITH_SAME_CLASS,
   SPECFLAG_NULL2,
   SPECFLAG_HAS_AI
};

enum mob_data_flag {
   MOBFLAG_HAS_PROC_DATA,
   MOBFLAG_SCAVENGE,
   MOBFLAG_WANDER,
   MOBFLAG_SHOULD_DO_PROCS,
   MOBFLAG_NEED_RESETTING,
   MOBFLAG_EDIBLE_CORPSE,
   MOBFLAG_IS_BANKER,
   MOBFLAG_SESSILE,
   MOBFLAG_NOT_HOMING,
   MOBFLAG_DISOLVABLE,
   MOBFLAG_NULL1,
   MOBFLAG_NULL2,
   MOBFLAG_NULL3,
   MOBFLAG_NULL4,
   MOBFLAG_NULL5,
   MOBFLAG_NULL6,
   MOBFLAG_HAS_SKIN,
   MOBFLAG_HAS_MOB_SCRIPT
};
enum obj_flags {
   OBJFLAG_NO_REST,
   OBJFLAG_ANTI_EVIL,
   OBJFLAG_ANTI_NEUTRAL,
   OBJFLAG_ANTI_GOOD,
   OBJFLAG_ANTI_DONATE,
   OBJFLAG_ANTI_DROP,
   OBJFLAG_ANTI_REMOVE,
   OBJFLAG_ANTI_MORTAL,
   OBJFLAG_ANTI_IMMORTAL,
   OBJFLAG_ANTI_DEMI,
   OBJFLAG_IN_USE,
   OBJFLAG_ANTI_WARRIOR,
   OBJFLAG_ANTI_SAGE,
   OBJFLAG_ANTI_WIZARD,
   OBJFLAG_ANTI_RANGER,
   OBJFLAG_ANTI_THIEF,
   OBJFLAG_ANTI_ALCHEMIST,
   OBJFLAG_ANTI_CLERIC,
   OBJFLAG_ANTI_BARD,
   OBJFLAG_ANTI_MOB,
   OBJFLAG_ANTI_PC,
   OBJFLAG_NOT_WORN,
   OBJFLAG_HEAD,
   OBJFLAG_NECK1,
   OBJFLAG_NECK2,
   OBJFLAG_AROUND_BODY,
   OBJFLAG_ARMS,
   OBJFLAG_WRIST1,
   OBJFLAG_WRIST2,
   OBJFLAG_HANDS,
   OBJFLAG_WIELDED,
   OBJFLAG_HELD,
   OBJFLAG_LIGHT,
   OBJFLAG_BODY,
   OBJFLAG_BELT,
   OBJFLAG_LEGS,
   OBJFLAG_FEET,
   OBJFLAG_FINGER1,
   OBJFLAG_FINGER2,
   OBJFLAG_SHIELD,
   OBJFLAG_NOT_A_WEAPON,
   OBJFLAG_SLASH,
   OBJFLAG_SMASH,
   OBJFLAG_PIERCE,
   OBJFLAG_WHIP,
   OBJFLAG_NEEDS_AMMO,
   OBJFLAG_DART_THROWER,
   OBJFLAG_BOW,
   OBJFLAG_DART,
   OBJFLAG_ARROW,
   OBJFLAG_JUNK,
   OBJFLAG_WAND,
   OBJFLAG_POTION,
   OBJFLAG_SCROLL,
   OBJFLAG_CONTAINER,
   OBJFLAG_COINS,
   OBJFLAG_ARMOR,
   OBJFLAG_WEAPON,
   OBJFLAG_LIGHT_SOURCE,
   OBJFLAG_CANTEEN,
   OBJFLAG_LIQUID,
   OBJFLAG_FOOD,
   OBJFLAG_BOAT,
   OBJFLAG_HAS_SPEC_PROC_DATA,
   OBJFLAG_TOOLBOX,
   OBJFLAG_CAULDRON,
   OBJFLAG_PEN,
   OBJFLAG_CONSTRUCT_COMPONENT,
   OBJFLAG_CONCOCT_COMPONENT,
   OBJFLAG_PARCHMENT,
   OBJFLAG_NEEDS_RESETTING,
   OBJFLAG_NOT_COMPLETE,
   OBJFLAG_HERB,
   OBJFLAG_VENDING_MACHINE,
   OBJFLAG_BULLETIN_BOARD,
   OBJFLAG_IS_BUTCHERABLE,
   OBJFLAG_HAS_OBJ_SCRIPT
};

enum bag_flags {
   BAGFLAG_UNUSED1,
   BAGFLAG_UNUSED2,
   BAGFLAG_IS_CLOSED,
   BAGFLAG_IS_LOCKED,
   BAGFLAG_IS_PICKABLE,
   BAGFLAG_IS_MAG_LOCKABLE,
   BAGFLAG_IS_MAG_LOCKED,
   BAGFLAG_IS_DESTRUCTABLE,
   BAGFLAG_IS_CORPSE,
   BAGFLAG_NOT_CLOSABLE,
   BAGFLAG_PLAYER_OWNED,
   BAGFLAG_CONSUMES_KEY
};

enum door_data_flags {
   DDFLAG_OPEN_EXIT,
   DDFLAG_MAGIC_LOCKABLE,
   DDFLAG_CLOSED,
   DDFLAG_LOCKED,
   DDFLAG_PICKABLE,
   DDFLAG_LOCKABLE,
   DDFLAG_MAG_LOCKED,
   DDFLAG_DESTRUCTABLE,
   DDFLAG_CLOSABLE,
   DDFLAG_FLIPPABLE,
   DDFLAG_IN_USE,
   DDFLAG_PC_CANT_OPEN,
   DDFLAG_VEHICLE_EXIT,
   DDFLAG_SECRET,
   DDFLAG_BLOCKED,
   DDFLAG_NOT_COMPLETE,
   DDFLAG_SECRET_WHEN_OPEN,
   DDFLAG_CONSUMES_KEY,
   DDFLAG_NO_PASSDOOR
};

enum room_flags {
   ROOMFLAG_NO_RESTRICTIONS,
   ROOMFLAG_NO_IMM,
   ROOMFLAG_NO_GOD,
   ROOMFLAG_IS_PERM_DARK,
   ROOMFLAG_WEATHER,
   ROOMFLAG_NO_SHOUT,
   ROOMFLAG_NO_MAGICAL_EXIT,
   ROOMFLAG_IS_HAVEN,
   ROOMFLAG_NO_PK,
   ROOMFLAG_NO_MAGIC,
   ROOMFLAG_NO_MOB,
   ROOMFLAG_NO_POTIONS,
   ROOMFLAG_NO_STAFFS,
   ROOMFLAG_NO_MORTALS,
   ROOMFLAG_NORMALLY_DARK,
   ROOMFLAG_SHALLOW_WATER,
   ROOMFLAG_DEEP_WATER,
   ROOMFLAG_SWAMP,
   ROOMFLAG_NEED_FLY,
   ROOMFLAG_NEED_BOAT,
   ROOMFLAG_NEED_CLIMB,
   ROOMFLAG_IS_ZLOCKED,
   ROOMFLAG_IS_TOTAL_LOADED,
   ROOMFLAG_IS_USED,
   ROOMFLAG_NO_MAGICAL_ENTRY,
   ROOMFLAG_NO_VEHICLES,
   ROOMFLAG_CRAMPED,
   ROOMFLAG_NO_RANGED_ATTACK,
   ROOMFLAG_NEED_DIVE,
   ROOMFLAG_USED_IN_TRACK,
   ROOMFLAG_CAN_CAMP,
   ROOMFLAG_NOT_COMPLETE,
   ROOMFLAG_HAS_KEYWORDS,
   ROOMFLAG_NO_WANDERING_MOBS,
   ROOMFLAG_NO_FOREIGN_WANDERING_MOBS,
   ROOMFLAG_HAS_PROC_SCRIPT
};

enum vehicle_flags {
   VEHFLAG_SELF_GUIDED,
   VEHFLAG_STEALTHY,
   VEHFLAG_UNLIMITED_FUEL,
   VEHFLAG_FLIES,
   VEHFLAG_CLIMBS,
   VEHFLAG_FLOATS,
   VEHFLAG_DIVES,
   VEHFLAG_CAN_SEE_OUT
};

enum entity_type {
   ENTITY_CRITTER,
   ENTITY_ROOM,
   ENTITY_DOOR,
   ENTITY_OBJECT
};// entity_type

/** Used in affect_crit_stat, script.h */
enum StatTypeE {
   STAT_HP,
   STAT_MANA,
   STAT_MOV
};

enum ComparisonTypeE {
   CT_EQUALS,
   CT_GT,
   CT_LT
};

enum BugTypeE {
   BT_IDEAS,
   BT_BUGS
};

extern ServerConfig config;

#ifdef USEMYSQL
extern MYSQL* database;

enum ObjTableFieldIndex {
   OBJTBL_OBJ_NUM,
   OBJTBL_SOBJ_NUM,
   OBJTBL_SHORT_DESC,
   OBJTBL_IN_ROOM_DESC,
   OBJTBL_LONG_DESC,
   OBJTBL_CHARGES,
   OBJTBL_TIMES_RECHARGABLE,
   OBJTBL_PERCENT_LOAD,
   OBJTBL_VIS_BIT,
   OBJTBL_PRICE,
   OBJTBL_FROM_ZONE,
   OBJTBL_SKIN_NUMBER,
   OBJTBL_MAX_IN_GAME,
   OBJTBL_WEIGHT,
   OBJTBL_DICE_SIDES,
   OBJTBL_DICE_COUNT,
   OBJTBL_LEVEL,
   OBJTBL_KEY_NUM,
   OBJTBL_MAX_WEIGHT,
   OBJTBL_PERCENT_WEIGHT,
   OBJTBL_TIME_TILL_DISSOLVE,
   OBJTBL_NO_REST,
   OBJTBL_ANTI_EVIL,
   OBJTBL_ANTI_NEUTRAL,
   OBJTBL_ANTI_GOOD,
   OBJTBL_ANTI_DONATE,
   OBJTBL_ANTI_DROP,
   OBJTBL_ANTI_REMOVE,
   OBJTBL_ANTI_MORTAL,
   OBJTBL_ANTI_IMMORTAL,
   OBJTBL_ANTI_DEMI,
   OBJTBL_IN_USE,
   OBJTBL_ANTI_WARRIOR,
   OBJTBL_ANTI_SAGE,
   OBJTBL_ANTI_WIZARD,
   OBJTBL_ANTI_RANGER,
   OBJTBL_ANTI_THIEF,
   OBJTBL_ANTI_ALCHEMIST,
   OBJTBL_ANTI_CLERIC,
   OBJTBL_ANTI_BARD,
   OBJTBL_ANTI_MOB,
   OBJTBL_ANTI_PC,
   OBJTBL_NOT_WORN,
   OBJTBL_HEAD,
   OBJTBL_NECK1,
   OBJTBL_NECK2,
   OBJTBL_AROUND_BODY,
   OBJTBL_ARMS,
   OBJTBL_WRIST1,
   OBJTBL_WRIST2,
   OBJTBL_HANDS,
   OBJTBL_WIELDED,
   OBJTBL_HELD,
   OBJTBL_LIGHT,
   OBJTBL_BODY,
   OBJTBL_BELT,
   OBJTBL_LEGS,
   OBJTBL_FEET,
   OBJTBL_FINGER1,
   OBJTBL_FINGER2,
   OBJTBL_SHIELD,
   OBJTBL_NOT_A_WEAPON,
   OBJTBL_SLASH,
   OBJTBL_SMASH,
   OBJTBL_PIERCE,
   OBJTBL_WHIP,
   OBJTBL_NEEDS_AMMO,
   OBJTBL_DART_THROWER,
   OBJTBL_BOW,
   OBJTBL_DART,
   OBJTBL_ARROW,
   OBJTBL_JUNK,
   OBJTBL_WAND,
   OBJTBL_POTION,
   OBJTBL_SCROLL,
   OBJTBL_CONTAINER,
   OBJTBL_COINS,
   OBJTBL_ARMOR,
   OBJTBL_WEAPON,
   OBJTBL_LIGHT_SOURCE,
   OBJTBL_CANTEEN,
   OBJTBL_LIQUID,
   OBJTBL_FOOD,
   OBJTBL_BOAT,
   OBJTBL_HAS_SPEC_PROC_DATA,
   OBJTBL_TOOLBOX,
   OBJTBL_CAULDRON,
   OBJTBL_PEN,
   OBJTBL_CONSTRUCT_COMPONENT,
   OBJTBL_CONCOCT_COMPONENT,
   OBJTBL_PARCHMENT,
   OBJTBL_NEEDS_RESETTING,
   OBJTBL_HERB,
   OBJTBL_VENDING_MACHINE,
   OBJTBL_BULLETIN_BOARD,
   OBJTBL_IS_BUTCHERABLE,
   OBJTBL_HAS_OBJ_SCRIPT,
   OBJTBL_IS_CLOSED,
   OBJTBL_IS_PICKABLE,
   OBJTBL_IS_LOCKED,
   OBJTBL_IS_MAG_LOCKABLE,
   OBJTBL_IS_MAG_LOCKED,
   OBJTBL_IS_DESCTRUCTABLE,
   OBJTBL_IS_CORPSE,
   OBJTBL_NOT_CLOSABLE,
   OBJTBL_IS_PLAYER_OWNED,
   OBJTBL_CONSUMES_KEY,
   OBJTBL_CONSUME_TELEPORT,
   OBJTBL_HAS_CONSTRUCT_DATA,
   OBJTBL_HAS_SKIN,
   OBJTBL_CONSUME_POISON,
   OBJTBL_CASTS_SPELLS
};

enum ObjScriptTableFieldsIndex {
   OSCRTB_OBJ_NUM,
   OSCRTBL_SOBJ_NUM,
   OSCRTBL_TRIGGER_CMD,
   OSCRTBL_TARGET,
   OSCRTBL_ACTOR,
   OSCRTBL_DISCRIMINATOR,
   OSCRTBL_PRECEDENCE,
   OSCRTBL_SCRIPT_COMMANDS
};

enum ObjInvTableFieldsIndex {
   OBJINVTBL_OBJ_NUM,
   OBJINVTBL_SOBJ_NUM,
   OBJINVTBL_CONTENT_OBJ_NUM,
   OBJINVTBL_CONTENT_SOBJ_NUM,
   OBJINVTBL_QUANTITY
};

enum DoorTableFieldsIndex {
   DOORTBL_DOOR_NUM,
   DOORTBL_LONG_DESC,
   DOORTBL_VIS_BIT,
   DOORTBL_TOKEN_NUM,
   DOORTBL_IN_ZONE,
   DOORTBL_OPEN_EXIT,
   DOORTBL_MAGIC_LOCKABLE,
   DOORTBL_CLOSED,
   DOORTBL_LOCKED,
   DOORTBL_PICKABLE,
   DOORTBL_LOCKABLE,
   DOORTBL_MAG_LOCKED,
   DOORTBL_DESTRUCTABLE,
   DOORTBL_CLOSABLE,
   DOORTBL_FLIPPABLE,
   DOORTBL_PC_CANT_OPEN,
   DOORTBL_VEHICLE_EXIT,
   DOORTBL_SECRET,
   DOORTBL_BLOCKED,
   DOORTBL_SECRET_WHEN_OPEN,
   DOORTBL_CONSUMES_KEY,
   DOORTBL_NO_PASSDOOR
};

enum RoomTableFieldsIndex {
   ROOMTBL_ROOM_NUM,
   ROOMTBL_SHORT_DESC,
   ROOMTBL_LONG_DESC,
   ROOMTBL_VIS_BIT,
   ROOMTBL_MOVEMENT_COST,
   ROOMTBL_FALL_TO,
   ROOMTBL_IN_ZONE,
   ROOMTBL_NO_RESTRICTIONS,
   ROOMTBL_NO_IMM,
   ROOMTBL_NO_GOD,
   ROOMTBL_IS_PERM_DARK,
   ROOMTBL_WEATHER,
   ROOMTBL_NO_SHOUT,
   ROOMTBL_NO_MAGICAL_EXIT,
   ROOMTBL_IS_HAVEN,
   ROOMTBL_NO_PK,
   ROOMTBL_NO_MAGIC,
   ROOMTBL_NO_MOB,
   ROOMTBL_NO_POTIONS,
   ROOMTBL_NO_STAFFS,
   ROOMTBL_NO_MORTALS,
   ROOMTBL_NORMALLY_DARK,
   ROOMTBL_SHALLOW_WATER,
   ROOMTBL_DEEP_WATER,
   ROOMTBL_SWAMP,
   ROOMTBL_NEED_FLY,
   ROOMTBL_NEED_BOAT,
   ROOMTBL_NEED_CLIMB,
   ROOMTBL_NO_MAGICAL_ENTRY,
   ROOMTBL_NO_VEHICLES,
   ROOMTBL_CRAMPED,
   ROOMTBL_NO_RANGED_ATTACK,
   ROOMTBL_NEED_DIVE,
   ROOMTBL_USED_IN_TRACK,
   ROOMTBL_CAN_CAMP,
   ROOMTBL_HAS_KEYWORDS,
   ROOMTBL_NO_WANDERING_MOBS,
   ROOMTBL_NO_FOREIGN_WANDERING_MOBS,
   ROOMTBL_HAS_PROC_SCRIPT
};

enum RoomScriptTableFieldsIndex {
   RMSCRTBL_ROOM_NUM,
   RMSCRTBL_TRIGGER_CMD,
   RMSCRTBL_TARGET,
   RMSCRTBL_ACTOR,
   RMSCRTBL_DISCRIMINATOR,
   RMSCRTBL_PRECEDENCE,
   RMSCRTBL_SCRIPT_COMMANDS
};

enum VehicleTableFieldsIndex {
   VEHTBL_ROOM_NUM,
   VEHTBL_IN_ROOM,
   VEHTBL_TICKS_BETWEEN_STOPS,
   VEHTBL_CUR_FUEL,
   VEHTBL_MAX_FUEL,
   VEHTBL_SELF_GUIDED,
   VEHTBL_STEALTHY,
   VEHTBL_UNLIMITED_FUEL,
   VEHTBL_FLIES,
   VEHTBL_CLIMBS,
   VEHTBL_FLOATS,
   VEHTBL_DIVES,
   VEHTBL_CAN_SEE_OUT
};

enum CritterTableFieldsIndex {
   CRITTBL_MOB_NUMBER,
   CRITTBL_PC_NUMBER,
   CRITTBL_SHORT_DESC,
   CRITTBL_IN_ROOM_DESC,
   CRITTBL_LONG_DESC,
   CRITTBL_EXP_WORTH,
   CRITTBL_GOLD,
   CRITTBL_BANK_GOLD,
   CRITTBL_POSITION,
   CRITTBL_STR,
   CRITTBL_INTELLIGENCE,
   CRITTBL_CON,
   CRITTBL_CHA,
   CRITTBL_WIS,
   CRITTBL_DEX,
   CRITTBL_HIT,
   CRITTBL_DAM,
   CRITTBL_AC,
   CRITTBL_ATTACKS,
   CRITTBL_BHD_COUNT,
   CRITTBL_BHD_SIDES,
   CRITTBL_PAUSE_COUNT,
   CRITTBL_SEX,
   CRITTBL_CLASS,
   CRITTBL_RACE,
   CRITTBL_ALIGNMENT,
   CRITTBL_LEVEL,
   CRITTBL_IMM_LEVEL,
   CRITTBL_HOMETOWN,
   CRITTBL_WIMPY,
   CRITTBL_PRACTICES,
   CRITTBL_MOB_TYPE,
   CRITTBL_RELIGION,
   CRITTBL_GUILD,
   CRITTBL_FROM_ZONE,
   CRITTBL_VIS_BITS,
   CRITTBL_SEE_BITS,
   CRITTBL_IN_ROOM,
   CRITTBL_SKIN,
   CRITTBL_HP,
   CRITTBL_MANA,
   CRITTBL_MOV,
   CRITTBL_HP_MAX,
   CRITTBL_MANA_MAX,
   CRITTBL_MOV_MAX,
   CRITTBL_HP_REGEN,
   CRITTBL_MANA_REGEN,
   CRITTBL_MOV_REGEN,
   CRITTBL_DAM_REC_MOD,
   CRITTBL_DAM_GIV_MOD,
   CRITTBL_HEAT_RESIS,
   CRITTBL_COLD_RESIS,
   CRITTBL_ELECT_RESIS,
   CRITTBL_SPELL_RESIS,
   CRITTBL_WEIGHT,
   CRITTBL_MAX_IN_GAME,
   CRITTBL_BIRTH_DAY,
   CRITTBL_BIRTH_YEAR,
   CRITTBL_RENT_DAY,
   CRITTBL_RENT_YEAR,
   CRITTBL_LAST_LOGIN_TIME,
   CRITTBL_TOTAL_TIME_ONLINE,
   CRITTBL_AGE,
   CRITTBL_HUNGER,
   CRITTBL_THIRST,
   CRITTBL_DRUGGEDNESS,
   CRITTBL_PKILLS,
   CRITTBL_DEATHS,
   CRITTBL_QUEST_POINTS,
   CRITTBL_POOFIN_MSG,
   CRITTBL_POOFOUT_MSG,
   CRITTBL_PREFERRED_LANGUAGE,
   CRITTBL_PASSWORD,
   CRITTBL_LINES_ON_PAGE,
   CRITTBL_PROMPT,
   CRITTBL_GOS_COLOR,
   CRITTBL_SAY_COLOR,
   CRITTBL_YELL_COLOR,
   CRITTBL_TELL_COLOR,
   CRITTBL_DESC_COLOR,
   CRITTBL_OBJ_LIST_COLOR,
   CRITTBL_MOB_LIST_COLOR,
   CRITTBL_DEFAULT_COLOR,
   CRITTBL_BACKGROUND_COLOR,
   CRITTBL_BATTLE_COLOR,
   CRITTBL_USER1_COLOR,
   CRITTBL_USER2_COLOR,
   CRITTBL_USER3_COLOR,
   CRITTBL_GUARDING_DIRECTION,
   CRITTBL_STORE_MANAGER,
   CRITTBL_WRONG_ALIGN_MSG,
   CRITTBL_WRONG_CLASS_MSG,
   CRITTBL_WRONG_RACE_MSG,
   CRITTBL_MARKUP,
   CRITTBL_BUY_PERCENTAGE,
   CRITTBL_OPEN_TIME,
   CRITTBL_CLOSE_TIME,
   CRITTBL_SKILL_VIOLENCE,
   CRITTBL_BENEVOLENCE,
   CRITTBL_DEFENSIVENESS,
   CRITTBL_BAD_ASSEDNESS,
   CRITTBL_SOCIAL_AWARENESS,
   CRITTBL_CAN_SEE_INVENTORY,
   CRITTBL_USING_LIGHT_SOURCE,
   CRITTBL_IS_FLYING,
   CRITTBL_HAS_BOAT,
   CRITTBL_CAN_CLIMB,
   CRITTBL_GOSSIPS,
   CRITTBL_YELLS,
   CRITTBL_GRATZ,
   CRITTBL_AUCTIONS,
   CRITTBL_SHOUTS,
   CRITTBL_SAYS,
   CRITTBL_TELLS,
   CRITTBL_WIZNETS,
   CRITTBL_IS_PARALYZED,
   CRITTBL_IS_PERM_SLEEPED,
   CRITTBL_IS_DUAL_WIELDING,
   CRITTBL_IS_SNEAKING,
   CRITTBL_IN_USE,
   CRITTBL_CAN_DIVE,
   CRITTBL_IS_HIDE,
   CRITTBL_IS_FROZEN,
   CRITTBL_IS_GAGGED,
   CRITTBL_HAS_IMM_DATA,
   CRITTBL_CLOAKED,
   CRITTBL_TANK_GRAPH,
   CRITTBL_USING_CLIENT,
   CRITTBL_AUTO_EXIT,
   CRITTBL_NO_HASSLE,
   CRITTBL_BRIEF,
   CRITTBL_IS_BUILDER,
   CRITTBL_AUTOLOOT,
   CRITTBL_AUTOSPLIT,
   CRITTBL_EXTRA_INFO,
   CRITTBL_CR_BEHIND,
   CRITTBL_DO_CARRIAGE_RETURN,
   CRITTBL_CAN_DETECT_MAGIC,
   CRITTBL_DETECT_INVENTORY,
   CRITTBL_SHOW_VNUMS,
   CRITTBL_HAS_POOFIN_POOFOUT_MSG,
   CRITTBL_PAGE_OUTPUT,
   CRITTBL_NO_WIZCHAT,
   CRITTBL_HAS_COLORS,
   CRITTBL_USE_COLOR,
   CRITTBL_HAS_LANGUAGE_CHOICE,
   CRITTBL_NO_SHOW_NPC_ENTRY,
   CRITTBL_NO_BEEP,
   CRITTBL_IS_REMORT,
   CRITTBL_HAS_SACRIFICED,
   CRITTBL_HAS_PROC_DATA,
   CRITTBL_SCAVENGE,
   CRITTBL_WANDER,
   CRITTBL_SHOULD_DO_PROCS,
   CRITTBL_EDIBLE,
   CRITTBL_IS_BANKER,
   CRITTBL_IS_SESSILE,
   CRITTBL_NO_HOMING,
   CRITTBL_DISOLVABLE,
   CRITTBL_HAS_SKIN,
   CRITTBL_HAS_MOB_SCRIPTS,
   CRITTBL_IS_SHOPKEEPER,
   CRITTBL_IS_TEACHER,
   CRITTBL_LET_SAME_CLASS_PASS,
   CRITTBL_LET_SAME_RACE_PASS,
   CRITTBL_HAS_MOB_GIV_PROC,
   CRITTBL_HAS_MOB_SAY_PROC,
   CRITTBL_HAS_MOB_BOW_PROC,
   CRITTBL_HAS_MOB_CURSE_PROC,
   CRITTBL_PROC_WITH_SAME_RACE,
   CRITTBL_PROC_WITH_SAME_ALIGN,
   CRITTBL_PROC_WITH_SAME_CLASS,
   CRITTBL_HAS_AI,
   CRITTBL_BUY_0,
   CRITTBL_SELL_0,
   CRITTBL_OFFER_0,
   CRITTBL_IS_PLAYER_OWNED,
   CRITTBL_BUYS_NON_WEAPONS,
   CRITTBL_BUYS_SLASHING_WEAPONS,
   CRITTBL_BUYS_SMASHING_WEAPONS,
   CRITTBL_BUYS_PIERCING_WEAPONS,
   CRITTBL_BUYS_WHIPS,
   CRITTBL_BUYS_AMMO_NEEDING_WEAPONS,
   CRITTBL_BUYS_DART_THROWERS,
   CRITTBL_BUYS_BOWS,
   CRITTBL_BUYS_DARTS,
   CRITTBL_BUYS_ARROWS,
   CRITTBL_BUYS_JUNK,
   CRITTBL_BUYS_WANDS,
   CRITTBL_BUYS_POTIONS,
   CRITTBL_BUYS_SCROLLS,
   CRITTBL_BUYS_CONTAINERS,
   CRITTBL_BUYS_COINS,
   CRITTBL_BUYS_ARMOR,
   CRITTBL_BUYS_WEAPONS,
   CRITTBL_BUYS_LIGHTS,
   CRITTBL_BUYS_CANTEENS,
   CRITTBL_BUYS_LIQUIDS,
   CRITTBL_BUYS_FOOD,
   CRITTBL_BUYS_BOATS,
   CRITTBL_BUYS_TOOLBOXES,
   CRITTBL_BUYS_CAULDRENS,
   CRITTBL_BUYS_PENS,
   CRITTBL_BUYS_CONSTRUCT_COMPONENTS,
   CRITTBL_BUYS_CONCOCT_COMPONENTS,
   CRITTBL_BUYS_PARCHMENTS,
   CRITTBL_BUYS_HERBS,
   CRITTBL_BUYS_VENDING_MACHINES,
   CRITTBL_TEACHES_WARRIORS,
   CRITTBL_TEACHES_SAGES,
   CRITTBL_TEACHES_WIZARDS,
   CRITTBL_TEACHES_RANGERS,
   CRITTBL_TEACHES_THIEVES,
   CRITTBL_TEACHES_ALCHEMISTS,
   CRITTBL_TEACHES_CLERICS,
   CRITTBL_TEACHES_BARDS,
};

enum CritScriptTableFieldsIndex {
   CRSTBL_MOB_NUMBER,
   CRSTBL_TRIGGER_CMD,
   CRSTBL_TARGET,
   CRSTBL_ACTOR,
   CRSTBL_DISCRIMINATOR,
   CRSTBL_PRECEDENCE,
   CRSTBL_SCRIPT_COMMANDS
};

enum CritProcTableFieldsIndex {
   CRPTBL_MOB_NUMBER,
   CRPTBL_PROC_TYPE,
   CRPTBL_PROC_TOPIC,
   CRPTBL_CORRECT_MSG,
   CRPTBL_INCORRECT_MSG,
   CRPTBL_TEST_ONUM,
   CRPTBL_AWARD_ONUM,
   CRPTBL_SKILL_NAME,
   CRPTBL_TRANS_ROOM
};
#endif

extern const BitfieldNames MOB_DATA_FLAGS_NAMES;
extern const BitfieldNames MOB_PROC_DATA_FLAGS_NAMES;
extern const BitfieldNames SHOP_DATA_FLAGS_NAMES;
extern const BitfieldNames TEACH_DATA_FLAGS_NAMES;
extern const BitfieldNames PC_DATA_FLAGS_NAMES;
extern const BitfieldNames CRIT_FLAGS_NAMES;
extern const BitfieldNames DOOR_DATA_FLAGS_NAMES;
extern const BitfieldNames VEHICLE_FLAGS_NAMES;
extern const BitfieldNames ROOM_FLAGS_NAMES;
extern const BitfieldNames OBJ_FLAGS_NAMES;
extern const BitfieldNames OBJ_SPEC_DATA_FLAGS_NAMES;
extern const BitfieldNames BAG_FLAGS_NAMES;

extern const BitfieldNames STAT_AFFECT_NAMES;

extern LogStream mudlog;
extern LogStream obj_ptr_log;

extern bitfield Obj_Wear_Flags_Mask;
extern bitfield Obj_Consume_Procs_Mask;
extern bitfield Obj_Wear_Procs_Mask;
extern bitfield Obj_Remove_Procs_Mask;


extern char* olc_prompts[];
extern char* login_prompts[];

extern int do_shutdown;
extern int Cur_Max_Obj_Num;
extern int Cur_Max_Door_Num;
extern int Cur_Max_Room_Num;
extern int Cur_Max_Crit_Num;
extern int grr_reboot;
extern int BOOT_TIME; //time in seconds that it booted.
extern int DFLT_PORT;
extern int First_Room;        /* used in pulsed spec procs */
extern int Last_Room;        /* '' */

extern int GUARD_SKILL_NUM;
extern int SHIELD_SKILL_NUM;
extern int SECOND_ATTACK_SKILL_NUM; 
extern int BLOCK_SKILL_NUM;
extern int DUAL_WIELD_SKILL_NUM;
extern int DODGE_SKILL_NUM;
extern int PARRY_SKILL_NUM;
extern int CRITICAL_STRIKE_SKILL_NUM;
extern int ENHANCED_DAMAGE_SKILL_NUM;
extern int FIRE_BLADE_SKILL_NUM;
extern int FROST_BLADE_SKILL_NUM;
extern int BLINDNESS_SKILL_NUM;
extern int ABSORB_BLOWS_SKILL_NUM;
extern
int
   ABSORB_BLOWS_SKILL_NUM,
   ACROBATICS_SKILL_NUM,
   ANCIENT_LANGUAGES_SKILL_NUM,
   ALCHEMY_SKILL_NUM,
   ARCHERY_SKILL_NUM,
   ARMOR_SKILL_NUM,
   BACKSTAB_SKILL_NUM,
   BALLISTICS_SKILL_NUM,
   BASH_DOOR_SKILL_NUM,
   BASH_SKILL_NUM,
   BERZERK_SKILL_NUM,
   BIND_WOUND_SKILL_NUM,
   BLACKSMITHING_SKILL_NUM,
   BLEND_SKILL_NUM,
   BLESS_SKILL_NUM,
   BLINDNESS_SKILL_NUM,
   BLOCK_SKILL_NUM,
   BLOCK_DOOR_SKILL_NUM,
   BODYSLAM_SKILL_NUM,
   BOW_SKILL_NUM,
   BRAWLING_SKILL_NUM,
   BREW_SKILL_NUM,
   BURNING_HANDS_SKILL_NUM,
   BUTCHER_SKILL_NUM,
   CAMPING_SKILL_NUM,
   CALM_SKILL_NUM,
   CAMOUFLAGE_SKILL_NUM,
   CAUSE_CRITICAL_SKILL_NUM,
   CAUSE_SICKNESS_SKILL_NUM,
   CHARM_SKILL_NUM,
   CHANNELLING_SKILL_NUM,
   CIRCLE_SKILL_NUM,
   CLAW_SKILL_NUM,
   CLIMBING_SKILL_NUM,
   COMMERCE_SKILL_NUM,
   CONSTRUCT_SKILL_NUM,
   CONJURING_SKILL_NUM,
   CONJURE_HORDE_SKILL_NUM,
   CONJURE_MINION_SKILL_NUM,
   CREATE_GOLEM_SKILL_NUM,
   CREATE_LIGHT_SKILL_NUM,
   CREATE_FOOD_SKILL_NUM,
   CREATE_WATER_SKILL_NUM,
   CREATION_SKILL_NUM,
   CRITICAL_STRIKE_SKILL_NUM,
   CURE_BLINDNESS_SKILL_NUM,
   CURE_CRITICAL_SKILL_NUM,
   CURE_SERIOUS_SKILL_NUM,
   CURE_SKILL_NUM,
   CURSE_SKILL_NUM,
   DAGGER_SKILL_NUM,
   DETECTION_SKILL_NUM,
   DETECT_ALIGNMENT_SKILL_NUM,
   DETECT_HIDDEN_SKILL_NUM, 
   DETECT_INVISIBILITY_SKILL_NUM,
   DETECT_MAGIC_SKILL_NUM,
   DETECT_POISON_SKILL_NUM,
   DETECT_RESISTANCES_SKILL_NUM,
   DISARM_SKILL_NUM,
   DISTORTION_WALL_SKILL_NUM,
   DISPEL_MAGIC_SKILL_NUM,
   DISPEL_GOOD_SKILL_NUM,
   DISPEL_EVIL_SKILL_NUM,
   DIVINE_PROTECTION_SKILL_NUM,
   DODGE_SKILL_NUM,
   DOD_SKILL_NUM,
   DOOR_BASH_SKILL_NUM,
   DUAL_WIELD_SKILL_NUM,
   EARTHMELD_SKILL_NUM,
   ELEMENTALISM_SKILL_NUM,
   ENCHANTMENT_SKILL_NUM,
   ENCHANT_ARMOR_SKILL_NUM,
   ENCHANT_WEAPON_SKILL_NUM,
   ENHANCED_DAMAGE_SKILL_NUM,
   ENTANGLE_SKILL_NUM,
   FAERIE_FIRE_SKILL_NUM,
   FENCING_SKILL_NUM,
   FIRE_BLADE_SKILL_NUM,
   FIREBALL_SKILL_NUM,
   FIREPROOF_SKILL_NUM,
   FIRESTORM_SKILL_NUM,
   FIREWALL_SKILL_NUM,
   FLAME_STRIKE_SKILL_NUM,
   FLESH_TO_STONE_SKILL_NUM,
   FLY_SKILL_NUM,
   FORESTRY_SKILL_NUM,
   FROST_BLADE_SKILL_NUM,
   GATE_SKILL_NUM,
   GROUP_HEAL_SKILL_NUM,
   GUARD_SKILL_NUM,
   HARM_SKILL_NUM,
   HARMING_SKILL_NUM,
   HASTE_SKILL_NUM,
   HEAL_SKILL_NUM,
   HEALING_SKILL_NUM,
   HERBALISM_SKILL_NUM,
   HEROS_FEAST_SKILL_NUM,
   HIDE_SKILL_NUM,
   HONOR_CODE_SKILL_NUM,
   HOLY_WORD_SKILL_NUM,
   HURL_SKILL_NUM,
   ICESTORM_SKILL_NUM,
   IDENTIFY_SKILL_NUM,
   ILLUMINATE_SKILL_NUM,
   ILLUSION_SKILL_NUM,
   INFRAVISION_SKILL_NUM,
   INVISIBILITY_SKILL_NUM,
   KICK_SKILL_NUM,
   LEADERSHIP_SKILL_NUM,
   LIGHTNING_SKILL_NUM,
   LIGHTNING_STORM_SKILL_NUM,
   LITERACY_SKILL_NUM,
   LOCATE_SKILL_NUM,
   LOGIC_SKILL_NUM,
   LORE_SKILL_NUM,
   MACE_SKILL_NUM,
   MAGIC_SHIELD_SKILL_NUM,
   MANA_SKILL_NUM,
   MARTIAL_ARTS_SKILL_NUM,
   MASS_CHARM_SKILL_NUM,
   MEDITATION_SKILL_NUM,
   METEORSTORM_SKILL_NUM,
   MIRROR_IMAGE_SKILL_NUM,
   NECROMANCY_SKILL_NUM,
   ORB_OF_POWER_SKILL_NUM,
   PARRY_SKILL_NUM,
   PASSDOOR_SKILL_NUM,
   PHYSICAL_ARTS_SKILL_NUM,
   PHYSIK_SKILL_NUM,
   PFE_SKILL_NUM,
   PFG_SKILL_NUM,
   PHILOSOPHY_SKILL_NUM,
   PICKLOCK_SKILL_NUM,
   PLAGUE_SKILL_NUM,
   POISON_SKILL_NUM,
   PORTAL_SKILL_NUM,
   PRISMATIC_GLOBE_SKILL_NUM,
   PROTECTION_SKILL_NUM,
   QUAKE_SKILL_NUM,
   QUICKFOOT_SKILL_NUM,
   RAISE_UNDEAD_SKILL_NUM,
   RAINBOW_SKILL_NUM,
   RECALL_SKILL_NUM,
   RECHARGE_SKILL_NUM,
   RELIGION_SKILL_NUM,
   REMOVE_POISON_SKILL_NUM,
   REMOVE_CURSE_SKILL_NUM,
   RESCUE_SKILL_NUM,
   RESTORE_SKILL_NUM,
   RUNE_EDGE_SKILL_NUM,
   SANCTUARY_SKILL_NUM,
   SCAN_SKILL_NUM,
   SCRIBE_SKILL_NUM,
   SCROLLS_SKILL_NUM,
   SCRYING_SKILL_NUM,
   SECOND_ATTACK_SKILL_NUM, 
   SHADOWS_BLESSING_SKILL_NUM,
   SHIELcD_SKILL_NUM,
   SHOCKING_GRASP_SKILL_NUM,
   SKIN_SKILL_NUM,
   SLEEP_SKILL_NUM,
   SNEAK_SKILL_NUM,
   SOBER_SKILL_NUM,
   STEAL_SKILL_NUM,
   STRENGTH_SKILL_NUM,
   STRENGTH_CONDITIONING_SKILL_NUM,
   STONE_SKIN_SKILL_NUM,
   SUMMON_SKILL_NUM,
   SWORD_SKILL_NUM,
   SWORDBOND_SKILL_NUM,
   TAIL_SKILL_NUM,
   TAMMUZ_SKILL_NUM,
   TELEPORT_SKILL_NUM,
   THROWING_SKILL_NUM,
   TORNADO_SKILL_NUM,
   TRACK_SKILL_NUM,
   TRIP_SKILL_NUM,
   TYPHOON_SKILL_NUM,
   WEAKEN_SKILL_NUM,
   WEAPON_MASTERY_SKILL_NUM,
   WEB_SKILL_NUM,
   WHIP_SKILL_NUM,
   WIZARD_EYE_SKILL_NUM,
   WRESTLING_SKILL_NUM,
// New skills for the Avian/Dragon race
// [RJY] - Trice
   HOVER_SKILL_NUM,
   WING_POWER_SKILL_NUM,
   SECRET_FEATHER_SKILL_NUM,
   SHRIEK_SKILL_NUM,
   CARRY_SKILL_NUM,
   PECK_SKILL_NUM,
   TAILSWEEP_SKILL_NUM,
   VISION_SKILL_NUM,
   DIVE_SKILL_NUM,
   GLARE_SKILL_NUM,
   WINDZONE_SKILL_NUM,
   PLUCK_SKILL_NUM,
   BIRDSEYE_SKILL_NUM;
   


// Ripped off from some PennMUSH code someone posted to the
// mud-dev list.

/* ansi.h */

/* ANSI control codes for various neat-o terminal effects
 * Some older versions of Ultrix don't appear to be able to
 * handle these escape sequences. If lowercase 'a's are being
 * stripped from @doings, and/or the output of the ANSI flag
 * is screwed up, you have the Ultrix problem.
 *
 * To fix the ANSI problem, try replacing the '\x1B' with '\033'.
 * To fix the problem with 'a's, replace all occurrences of '\a'
 * in the code with '\07'.
 *
 */


//#define ANSI_ECHO_ON  "\n\x1B\x4D\x31\x32\x6C"
#define ANSI_ECHO_ON    ""


#ifndef OLD_ANSI

#define BEEP_CHAR     '\a'
#define ESC_CHAR      '\x1B'

#define ANSI_NORMAL   "\x1B[0m"

#define ANSI_HILITE   "\x1B[1m"
#define ANSI_INVERSE  "\x1B[7m"
#define ANSI_BLINK    "\x1B[5m"
#define ANSI_UNDERSCORE "\x1B[4m"

#define ANSI_INV_BLINK         "\x1B[7;5m"
#define ANSI_INV_HILITE        "\x1B[1;7m"
#define ANSI_BLINK_HILITE      "\x1B[1;5m"
#define ANSI_INV_BLINK_HILITE  "\x1B[1;5;7m"

/* Foreground colors */

#define ANSI_BLACK        "\x1B[30m"
#define ANSI_RED        "\x1B[31m"
#define ANSI_GREEN        "\x1B[32m"
#define ANSI_YELLOW        "\x1B[33m"
#define ANSI_BLUE        "\x1B[34m"
#define ANSI_MAGENTA        "\x1B[35m"
#define ANSI_CYAN        "\x1B[36m"
#define ANSI_WHITE        "\x1B[37m"

/* Background colors */

#define ANSI_BBLACK        "\x1B[40m"
#define ANSI_BRED        "\x1B[41m"
#define ANSI_BGREEN        "\x1B[42m"
#define ANSI_BYELLOW        "\x1B[43m"
#define ANSI_BBLUE        "\x1B[44m"
#define ANSI_BMAGENTA        "\x1B[45m"
#define ANSI_BCYAN        "\x1B[46m"
#define ANSI_BWHITE        "\x1B[47m"

#else

#define BEEP_CHAR     '\07'
#define ESC_CHAR      '\033'

#define ANSI_NORMAL   "\033[0m"


#define ANSI_HILITE   "\033[1m"
#define ANSI_INVERSE  "\033[7m"
#define ANSI_BLINK    "\033[5m"
#define ANSI_UNDERSCORE "\033[4m"

#define ANSI_INV_BLINK         "\033[7;5m"
#define ANSI_INV_HILITE        "\033[1;7m"
#define ANSI_BLINK_HILITE      "\033[1;5m"
#define ANSI_INV_BLINK_HILITE  "\033[1;5;7m"

/* Foreground colors */

#define ANSI_BLACK        "\033[30m"
#define ANSI_RED        "\033[31m"
#define ANSI_GREEN        "\033[32m"
#define ANSI_YELLOW        "\033[33m"
#define ANSI_BLUE        "\033[34m"
#define ANSI_MAGENTA        "\033[35m"
#define ANSI_CYAN        "\033[36m"
#define ANSI_WHITE        "\033[37m"

/* Background colors */

#define ANSI_BBLACK        "\033[40m"
#define ANSI_BRED        "\033[41m"
#define ANSI_BGREEN        "\033[42m"
#define ANSI_BYELLOW        "\033[43m"
#define ANSI_BBLUE        "\033[44m"
#define ANSI_BMAGENTA        "\033[45m"
#define ANSI_BCYAN        "\033[46m"
#define ANSI_BWHITE        "\033[47m"

#endif
// End of penn-mush ansi color stuff...

extern const String ANSI_BLACK_S;
extern const String ANSI_RED_S;
extern const String ANSI_GREEN_S;
extern const String ANSI_YELLOW_S;
extern const String ANSI_BLUE_S;
extern const String ANSI_MAGENTA_S;
extern const String ANSI_CYAN_S;
extern const String ANSI_WHITE_S;

extern const String ANSI_BBLACK_S;
extern const String ANSI_BRED_S;
extern const String ANSI_BGREEN_S;
extern const String ANSI_BYELLOW_S;
extern const String ANSI_BBLUE_S;
extern const String ANSI_BMAGENTA_S;
extern const String ANSI_BCYAN_S;
extern const String ANSI_BWHITE_S;


#define NUMBER_OF_ZONES                 80
#define NUMBER_OF_ROOMS                 8000
#define NUMBER_OF_MOBS                  1500
#define NUMBER_OF_ITEMS                 1500
#define NUMBER_OF_DOORS                 250

#define OBJ_MAX_EXTRAS                         9
#define OBJ_CUR_STATS                        4
#define MOB_LONG_DATA                        3
#define MOB_SHORT_CUR_STATS                43
#define MOB_CUR_STATS                        3
#define ROOM_CUR_STATS                        4

// Flags sent to the do_emote method.
#define EMOTE_POSSESSIVE         1
#define EMOTE_NON_POSSESSIVE     2


#define IMM_LEVEL        getImmLevel()
#define HUNTING                mob->proc_data->temp_proc->hunting
#define TRACKING               mob->proc_data->temp_proc->tracking
#define SNOOPED_BY        pc->snoop_by
#define SNOOPING        pc->snooping
#define MODE                getMode()
#define BIRTH_DAY        pc->birth_day
#define BIRTH_MONTH        pc->birth_month
#define BIRTH_YEAR        pc->birth_year
#define RENT_DAY        pc->rent_day
#define RENT_YEAR        pc->rent_year

#define WRONG_ALIGN_MSG mob->proc_data->wrong_align_msg
#define WRONG_RACE_MSG  mob->proc_data->wrong_race_msg
#define WRONG_CLASS_MSG mob->proc_data->wrong_class_msg

#define GIVE_PROC       mob->proc_data->give_proc
#define DOMOB_GIVE_NUM  mob->proc_data->give_proc->test_num
#define GIVE_RIGHT_MSG  mob->proc_data->give_proc->correct_msg
#define GIVE_RIGHT_ITEM mob->proc_data->give_proc->obj_num
#define GIVE_TEACH      mob->proc_data->give_proc->skill_name
#define GIVE_WRONG_MSG  mob->proc_data->give_proc->wrong_gift_msg
#define GIVE_TRANSPORT_ROOM          mob->proc_data->give_proc->trans_to_room


#define BOW_PROC                 mob->proc_data->bow_proc
#define BOW_MSG                   mob->proc_data->bow_proc->correct_msg
#define BOW_ITEM                  mob->proc_data->bow_proc->obj_num
#define BOW_TEACH                       mob->proc_data->bow_proc->skill_name
#define BOW_TRANSPORT_ROOM           mob->proc_data->bow_proc->trans_to_room


#define CURSE_PROC               mob->proc_data->curse_proc
#define CURSE_MSG                   mob->proc_data->curse_proc->correct_msg
#define CURSE_ITEM                  mob->proc_data->curse_proc->obj_num
#define CURSE_TEACH                 mob->proc_data->curse_proc->skill_name
#define CURSE_TRANSPORT_ROOM           mob->proc_data->curse_proc->trans_to_room

#define TOPICS                 mob->proc_data->topics
#define BUY_PERCENTAGE   mob->proc_data->sh_data->buy_percentage
#define OPEN_TIME         mob->proc_data->sh_data->open_time
#define CLOSE_TIME         mob->proc_data->sh_data->close_time
#define MARKUP                 mob->proc_data->sh_data->markup
#define PC_FLAGS         pc->pc_data_flags
#define GUARDING         temp_crit->guarding
#define SHIELDING        temp_crit->shielding
#define SHIELDED_BY      temp_crit->shielded_by
#define GUARDED_BY       temp_crit->guarded_by
#define MOB_FLAGS        mob->mob_data_flags
#define IS_FIGHTING         is_fighting
#define IS_BRIEF         isBrief()
#define USING_CLIENT         isUsingClient()
#define IS_SAY                 crit_flags.get(11)
#define IS_YELL                 crit_flags.get(7)
#define IS_GOSSIP         crit_flags.get(6)
#define IS_SHOUT         crit_flags.get(10)
#define IS_AUCTION         crit_flags.get(9)
#define CRIT_FLAGS         crit_flags
#define GROUPEES         groupees
#define PETS                 pets
#define FOLLOWER_OF         follower_of
#define MASTER                 master
#define EQ                 eq
#define SKILLS_KNOWN         pc->skills_spells_known
#define FOLLOWERS         followers
#define FLAG1                 mob->proc_data->flag1
#define INT1                 mob->proc_data->int1
#define SHOP_DATA_FLAGS         mob->proc_data->sh_data->shop_data_flags
#define TEACH_DATA_FLAGS \
         mob->proc_data->teach_data->teach_data_flags
#define MARKUP                 mob->proc_data->sh_data->markup
#define PERM_INV         mob->proc_data->sh_data->perm_inv
#define MOB_NUM                getIdNum()
#define MINI_AFFECTED_BY         mini_affected_by
#define USING_LIGHT_SOURCE        1
#define DO_PROMPT                10 //in pc_data
#define PROMPT_STRING                 pc->prompt
#define PC_IS_BUILDER                11 // ""
#define BH_DICE_COUNT         short_cur_stats[35]
#define BH_DICE_SIDES         short_cur_stats[36]
#define PK_COUNT         pc->pk_count
#define DIED_COUNT         pc->died_count
#define QUEST_POINTS         pc->quest_points


#define MOB_GOSSIP        6
#define MOB_YELL        7
#define MOB_GRATZ        8
#define MOB_AUC                9
#define MOB_SHOUT        10
#define MOB_SAY                11
#define MOB_TELL        12
#define MOB_WIZNET        13


#define BAG_FLAGS       bag->bag_flags
#define OBJ_PRCNT_LOAD        extras[2]
//#define OBJ_CUR_IN_GAME extras[3]
#define OBJ_MAX_IN_GAME extras[4]
#define OBJ_IN_ZONE        cur_stats[3]
#define CASTS_THESE_SPELLS   obj_proc->casts_these_spells
#define COMPONENT_ITEM1 obj_proc->construct_data->item1
#define COMPONENT_ITEM2 obj_proc->construct_data->item2
#define COMPONENT_ITEM3 obj_proc->construct_data->item3
#define COMPONENT_ITEM4 obj_proc->construct_data->item4
#define COMPONENT_ITEM5 obj_proc->construct_data->item5
#define COMPONENT_TARG  obj_proc->construct_data->target_object
#define OBJ_PRICE        cur_stats[1]
#define OBJ_FLAGS        obj_flags
#define OBJ_SPEC_FLAGS        obj_proc->obj_spec_data_flags
#define OBJ_VIS_BIT        cur_stats[0]
#define IN_LIST                in_list
#define OBJ_CUR_WEIGHT        getCurWeight()
#define OBJ_MAX_WEIGHT        getMaxWeight()
#define OBJ_NUM                cur_stats[2]
#define CHARGES                        extras[0]
#define RECHARGE                       extras[1]
#define OBJ_BASE_WEIGHT                extras[5]
#define OBJ_DAM_DICE_SIDES        extras[6]
#define OBJ_DAM_DICE_COUNT        extras[7]
#define OBJ_LEVEL                extras[8]
#define OBJ_CONTAINER                54
#define OBJ_LIGHT_SOURCE        58
#define PRICE                        cur_stats[1]


#define RM_IS_HAVEN        7
#define RM_IS_NONPK        8
#define RM_IS_NOMAG        9
#define CRITTERS        critters
#define DOORS                doors

#define DOOR_VIS_BIT        dr_data->vis_bit
#define VIS_DARK        1 //regarding vis_bits in general

#define O_COUNT                pc.pc->imm_data->olc_counter
#define TEMP_OLC_INT        pc.pc->imm_data->temp_olc_int


extern int do_shutdown;   //in grrmud.cc
extern int grr_reboot;   //in grrmud.cc

extern List<String*>   banned_hosts;
extern class critter   mob_list[NUMBER_OF_MOBS + 1];
extern class object    obj_list[NUMBER_OF_ITEMS + 1];
extern class door_data door_list[NUMBER_OF_DOORS +1];

extern List<class door*>        affected_doors; 
extern List<critter*>   affected_mobs; /* list those affected*/ 
extern List<struct object*>    affected_objects; /* ditto for objs */
extern List<critter*>   pc_list;      //head of pc list  
extern List<critter*>   linkdead_list;  //holds link dead folks
extern PtrArray<critter>   proc_action_mobs; //holds mob-proc'ing mobs


extern const char* CensoredStrings[];


extern const char* DARK_MSG;
extern const char* SLEEP_MSG;
extern const char* BLIND_MSG;
extern const char* NOT_IN_HAVEN_MSG;
extern const char* NOT_IN_NOMAG_RM_MSG;
extern const char* SPELL_MUST_BE_STANDING_MSG;
extern const char* NO_PK_HERE_MSG;
extern const char* NO_MANA_MSG;
extern const char* PARSE_ERR_MSG;
extern const char* NO_KNOW_SPELL_MSG;
extern const char* LOST_CONCENTRATION_MSG_SELF;
extern const char* LOST_CONCENTRATION_MSG_OTHER;
extern const char* SPELL_ONLY_ON_SELF_MSG;
extern const char* HUH_MSG;

//  RACES

#define OTHER_RACE                0
#define HUMAN                        1
#define ANITRE                        2
#define AVINTRE                        3
#define DARKLING                4
#define DROW                        5
#define DRAGON                        6
#define DWARF                        7
#define IRONCLAD                8
#define OGRUE                        9
#define ROCKTROLL                10
#define ELF                        11
#define FAERIE                        12
#define ENTITY                        13
#define SOMBRIAN                14
#define UNDEAD                        15
#define ANIMAL                        16
#define MONSTER                        17
#define AVIAN                   18

// PLAYER CLASSES

#define OTHER_CLASS                0
#define WARRIOR                        1
#define SAGE                        2
#define WIZARD                        3
#define RANGER                        4
#define THIEF                        5
#define ALCHEMIST                6
#define CLERIC                        7
#define BARD                        8

#define SEX_FEMALE              0
#define SEX_MALE                1
#define SEX_NEUTER              2


#define DOOR_NORTH              3
#define DOOR_SOUTH              4
#define DOOR_EAST               1
#define DOOR_WEST               2
#define DOOR_NORTHWEST          7
#define DOOR_NORTHEAST          6
#define DOOR_SOUTHEAST          5
#define DOOR_SOUTHWEST          8
#define DOOR_UP                 9
#define DOOR_DOWN               10


/******************* Types of Spells/Damages, for armor purposes ************/

#define FIRE            201
#define D_BREATH        202
#define ICE             203
#define ELECTRICITY     204
#define CRONIC          205                //poison,
#define NORMAL          206               //good ole hack/slash
#define SUMMON          207
#define CHARM           208
#define COERCION        209
#define AGILITY         210


#define HUNGER_ID          100                         //these are for identification
#define THIRST_ID          101                        //of stat_affects
#define DRUGGED_ID        102

#define CON_PLAYING     1
#define CON_LINKDEAD    2
#define CON_LOGGING_IN        3

#define TRUE            1       
#define FALSE           0



#define MAX_INPUT_LEN   5000  //can input this many chars at one time
#define OUTPUT_MAX_LEN  25000  //can hold this many chars in output buffer
#define DFLT_DIR        .
#define MAX_EQ          19

#define ROOM_INV 0
#define OBJ_INV  1
#define CRIT_INV 2

#define ROOM             room_list[pc.getCurRoomNum()]
#define GOLD             long_data[0]
#define EXP              long_data[1]
#define BANK_GOLD             long_data[2]
#define AGE              pc->age
#define SEE_BIT          cur_stats[1]
#define VIS_BIT          cur_stats[0]
#define POS              getPosn()
#define STR              short_cur_stats[1]
#define INT              short_cur_stats[2]
#define CON              short_cur_stats[3]
#define CHA              short_cur_stats[4]
#define WIS              short_cur_stats[5]
#define DEX              short_cur_stats[6]
#define HIT              short_cur_stats[7]
#define DAM              short_cur_stats[8]
#define AC               short_cur_stats[9]
#define ATTACKS          short_cur_stats[10]
#define SEX              short_cur_stats[12]
#define CLASS            short_cur_stats[13]
#define RACE             short_cur_stats[14]
#define HP               short_cur_stats[15]
#define MANA             short_cur_stats[16]
#define MOV              short_cur_stats[17]
#define ALIGN            short_cur_stats[18]
#define LEVEL            short_cur_stats[19]
#define IN_ROOM          cur_stats[2]
#define WIMPY            short_cur_stats[21]
#define PRACS            short_cur_stats[22]
#define HP_MAX           getHP_MAX()
#define MA_MAX           short_cur_stats[24]
#define MV_MAX                  short_cur_stats[25]
#define CRITTER_TYPE            short_cur_stats[26] /* was SMOB */
#define DAM_REC_MOD             short_cur_stats[27]
#define DAM_GIV_MOD             short_cur_stats[28]
#define HUNGER           pc->hunger
#define THIRST           pc->thirst
#define MAX_IN_GAME           mob->max_in_game
#define DRUGGED          pc->drugged
#define CRIT_WT_CARRIED           getCurWeight()
#define CRIT_MAX_WT_CARRY             getMaxWeight()
#define PAUSE            short_cur_stats[11]
#define HEAT_RESIS          short_cur_stats[29]
#define COLD_RESIS          short_cur_stats[30]
#define ELEC_RESIS          short_cur_stats[31]
#define SPEL_RESIS          short_cur_stats[32]
#define RELIGION         short_cur_stats[33]
//#define MOB_FROM_ZONE          short_cur_stats[34]
#define HP_REGEN            short_cur_stats[37] 
#define MA_REGEN            short_cur_stats[38] 
#define MV_REGEN            short_cur_stats[39] 
#define GUILD                 short_cur_stats[40]


//   SPEC_PROCS

#define BATTLE_SPEC_PROC            1
#define JUST_KILLED_PROC            2
#define OBJ_WEAR_PROC            3 
#define OBJ_REMOVE_PROC          4
#define OBJ_CONSUME_PROC        5
#define JK_SPEC_PROC                6 


extern const char* DONT_SEE_PERSON;
extern const char* NOT_IN_POSN;


extern String UNKNOWN_DESC;
extern String SOMEONE;
extern String SOMETHING;
extern String SOMEWHERE;
extern String UNKNOWN;
extern String NULL_STRING;
extern String NORTH;
extern String SOUTH;
extern String WEST;
extern String EAST;
extern String NORTHWEST;
extern String NORTHEAST;
extern String SOUTHWEST;
extern String SOUTHEAST;
extern String UP;
extern String DOWN;

extern char* critter_conditions[11];

#define MAX_LEVEL    45
extern long levels[MAX_LEVEL];

#endif