/*
* LOCAL DEFINITIONS
*/
#define MAX_SOCIAL 500
#define MAX_SPELL_ACT 225
#define MAX_LIQUID 50
#define MAX_TOWN 10
#define MAX_METAL 25
#define MAX_GROUP 200
#define MAX_RACE 180
#define MAX_AFF_CHAR 150
#define MAX_AFF_OBJ 50
#define MAX_COMMAND 400
#define MAX_CMD_CAT 30
#define MAX_CLSS 9
#define MAX_BUILD 50
#define MAX_HELP_CAT 30
#define MAX_NATION 15
#define MAX_ASTRAL 25
#define MAX_RELIGION 20
#define MAX_ALIGNMENT 9
#define MAX_FIELD 30
#define TABLE_SOC_DEFAULT 0
#define TABLE_SOC_HUMAN 1
#define TABLE_SOC_ELF 2
#define TABLE_SOC_GNOME 3
#define TABLE_SOC_DWARF 4
#define TABLE_SOC_HALFLING 5
#define TABLE_SOC_ENT 6
#define TABLE_SOC_CENTAUR 7
#define TABLE_SOC_LIZARD 8
#define TABLE_SOC_OGRE 9
#define TABLE_SOC_TROLL 10
#define TABLE_SOC_ORC 11
#define TABLE_SOC_GOBLIN 12
#define TABLE_SOC_VYAN 13
#define TABLE_SPELL_ACT 14
#define TABLE_LIQUID 15
#define TABLE_SPELL_DATA 16
#define TABLE_TOWN 17
#define TABLE_SKILL 18
#define TABLE_METAL 19
#define TABLE_NATION 20
#define TABLE_GROUP 21
#define TABLE_RACE 22
#define TABLE_PLYR_RACE 23
#define TABLE_AFF_CHAR 24
#define TABLE_AFF_OBJ 25
#define TABLE_COMMAND 26
#define TABLE_CMD_CAT 27
#define TABLE_CLSS 28
#define TABLE_STARTING 29
#define TABLE_TEDIT 30
#define TABLE_BUILD 31
#define TABLE_HELP_CAT 32
#define TABLE_ASTRAL 33
#define TABLE_RELIGION 34
#define TABLE_ALIGNMENT 35
#define MAX_TABLE 36
#define MAX_ENTRY_NATION table_max[ TABLE_NATION ]
#define MAX_ENTRY_GROUP table_max[ TABLE_GROUP ]
#define MAX_ENTRY_COMMAND table_max[ TABLE_COMMAND ]
#define MAX_ENTRY_AFF_CHAR table_max[ TABLE_AFF_CHAR ]
#define MAX_ENTRY_AFF_OBJ table_max[ TABLE_AFF_OBJ ]
#define MAX_ENTRY_CMD_CAT table_max[ TABLE_CMD_CAT ]
#define MAX_ENTRY_LIQUID table_max[ TABLE_LIQUID ]
#define MAX_ENTRY_BUILD table_max[ TABLE_BUILD ]
#define MAX_ENTRY_HELP_CAT table_max[ TABLE_HELP_CAT ]
#define MAX_ENTRY_TOWN table_max[ TABLE_TOWN ]
#define MAX_ENTRY_ASTRAL table_max[ TABLE_ASTRAL ]
#define MAX_ENTRY_NATION table_max[ TABLE_NATION ]
#define MAX_ENTRY_RACE table_max[ TABLE_RACE ]
#define MAX_ENTRY_RELIGION table_max[ TABLE_RELIGION ]
#define MAX_ENTRY_METAL table_max[ TABLE_METAL ]
#define MAX_ENTRY_ALIGNMENT table_max[ TABLE_ALIGNMENT ]
#define VAR_CHAR 0
#define VAR_INT 1
#define VAR_SA 2
#define CNST_CHAR 3
#define VAR_SKILL 4
#define VAR_SIZE 5
#define VAR_FUNC 6
#define VAR_CC 7
#define VAR_POS 8
#define VAR_AFF 9
#define VAR_OBJ 10
#define VAR_DICE 11
#define VAR_SCAT 12
#define VAR_STYPE 13
#define VAR_PERM 14
#define VAR_FORMULA 15
#define VAR_LEECH 16
#define VAR_BOOL 17
#define VAR_ALIGN 18
#define VAR_LANG 19
#define VAR_AFF_LOC 20
#define VAR_LOC 21
#define VAR_CENT 22
#define VAR_SEX 23
#define VAR_TEMP 24
#define VAR_BLANK 25
#define VAR_DELETE 26
/*
* TYPE DEFINITIONS
*/
typedef class Aff_Char_Type aff_char_type;
typedef class Aff_Obj_Type aff_obj_type;
typedef class Entry_Data entry_data;
typedef class Nation_Data nation_data;
typedef class Group_Data group_data;
typedef class Race_Data race_data;
typedef class Spell_Data spell_data;
typedef class Social_Type social_type;
typedef class Liquid_Type liquid_type;
typedef class Town_Type town_type;
typedef class Metal_Type metal_type;
typedef class Category_Data category_data;
typedef class Plyr_Race_Data plyr_race_data;
typedef class Clss_Type clss_type;
typedef class Command_Type command_type;
typedef class Starting_Data starting_data;
typedef class Tedit_Data tedit_data;
typedef class Spell_Act_Type spell_act_type;
typedef class Religion_Data religion_data;
typedef class Alignment_Data alignment_data;
/*
* STRUCTURES
*/
class Alignment_Data
{
public:
const char* name;
const char* abbrev;
};
class Aff_Char_Type
{
public:
const char* name;
char* id_line;
char* score_name;
char* msg_on;
char* msg_on_room;
char* msg_off;
char* msg_off_room;
int location;
char* modifier;
};
class Aff_Obj_Type
{
public:
const char* name;
char* msg_on;
char* msg_off;
int location;
};
class Nation_Data
{
public:
const char* name;
char* abbrev;
int room [ 2 ];
int temple;
int race [ MAX_PLYR_RACE ];
int alignment [ MAX_ALIGNMENT ];
};
class Command_Type
{
public:
char* name;
char* help;
char* func_name;
do_func* function;
int position;
int level [ 2 ];
int reqlen;
int disrupt;
int reveal;
int queue;
int category;
time_data max_time;
int calls;
time_data total_time;
Command_Type( ) {
function = NULL;
max_time = 0;
calls = 0;
total_time = 0;
return;
};
};
class Entry_Data
{
public:
void *offset;
int type;
};
class Plyr_Race_Data
{
public:
const char* name;
const char* plural;
int size;
int weight;
int resist [ MAX_RESIST ];
int affect [ AFFECT_INTS ];
int stat_bonus [ 5 ];
int hp_bonus;
int mana_bonus;
int move_bonus;
int start_room [ 3 ];
int portal;
int start_age;
int life_span;
int alignments;
int language;
bool open;
};
class Clss_Type
{
public:
const char* name;
const char* abbrev;
int hit_min;
int hit_max;
int mana_min;
int mana_max;
int move_min;
int move_max;
int hit_bonus;
int mana_bonus;
int move_bonus;
int resist [ MAX_RESIST ];
int alignments;
bool open;
};
class Group_Data
{
public:
const char* name;
};
class Liquid_Type
{
public:
const char* name;
char* color;
int hunger;
int thirst;
int alcohol;
int cost;
bool create;
int spell;
};
class Metal_Type
{
public:
char* name;
int cost;
int weight;
int mana;
int armor;
int enchant;
int save_fire;
int save_cold;
int save_acid;
char* msg_fire;
char* msg_cold;
char* msg_acid;
char* rust_name;
char* rust [3];
};
class Race_Data
{
public:
const char* name;
char* abbrev;
char* track;
};
class Skill_Type
{
public:
const char* name;
int pre_skill [ 2 ];
int pre_level [ 2 ];
int category;
int prac_cost [ MAX_CLSS ];
int level [ MAX_CLSS ];
};
class Social_Type
{
public:
char* name;
int position;
int aggressive;
int disrupt;
int reveal;
char* char_no_arg;
char* others_no_arg;
char* char_found;
char* others_found;
char* vict_found;
char* vict_sleep;
char* char_auto;
char* others_auto;
char* dir_self;
char* dir_others;
char* obj_self;
char* obj_others;
char* ch_obj_self;
char* ch_obj_others;
char* ch_obj_victim;
char* ch_obj_sleep;
char* self_obj_self;
char* self_obj_others;
};
class Spell_Act_Type
{
public:
char* name;
char* self_other;
char* victim_other;
char* others_other;
char* self_self;
char* others_self;
};
class Spell_Data
{
public:
char* name;
int prepare;
int wait;
char* damage;
char* regen;
char* leech_mana;
char* cast_mana;
char* duration;
int type;
int location;
spell_func* function;
int action [ 5 ];
int reagent [ 5 ];
};
class Tedit_Data
{
public:
char* name;
int edit;
int new_delete;
};
class Town_Type
{
public:
char* name;
int recall;
};
class Category_Data
{
public:
const char* name;
int level;
};
class Starting_Data
{
public:
char* name;
int skill [ 5 ];
int level [ 5 ];
int object [ 10 ];
};
class Religion_Data
{
public:
char* name;
int sex;
int alignments;
int classes;
};
/*
* DEFINITIONS
*/
#define AFF_NONE -1
#define AFF_ARMOR 0
#define AFF_BLESS 1
#define AFF_BLIND 2
#define AFF_DISPLACE 3
#define AFF_CHILL 4
#define AFF_CURSE 5
#define AFF_DETECT_EVIL 6
#define AFF_DETECT_HIDDEN 7
#define AFF_SEE_INVIS 8
#define AFF_DETECT_MAGIC 9
#define AFF_FAERIE_FIRE 10
#define AFF_FIRE_SHIELD 11
#define AFF_HIDE 12
#define AFF_INFRARED 13
#define AFF_INVISIBLE 14
#define AFF_WRATH 15
#define AFF_POISON 16
#define AFF_PROTECT 17
#define AFF_SANCTUARY 18
#define AFF_SLEEP 19
#define AFF_SNEAK 20
#define AFF_REGENERATION 21
#define AFF_SPEED 22
#define AFF_WATER_WALKING 23
#define AFF_WATER_BREATHING 24
#define AFF_INVULNERABILITY 25
#define AFF_ENTANGLED 26
#define AFF_CONFUSED 27
#define AFF_HALLUCINATE 28
#define AFF_SLOW 29
#define AFF_PROT_PLANTS 30
#define AFF_VITALITY 31
#define AFF_DETECT_GOOD 32
#define AFF_LIFE_SAVING 33
#define AFF_SLEEP_RESIST 34
#define AFF_RESIST_POISON 35
#define AFF_OGRE_STRENGTH 36
#define AFF_SILENCE 37
#define AFF_TONGUES 38
#define AFF_CONTINUAL_LIGHT 39
#define AFF_PLAGUE 40
#define AFF_TOMB_ROT 41
#define AFF_RABIES 42
#define AFF_PARALYSIS 43
#define AFF_FLOAT 44
#define AFF_BARKSKIN 45
#define AFF_PASS_DOOR 46
#define AFF_AXE_PROF 47
#define AFF_SWORD_PROF 48
#define AFF_BOW_PROF 49
#define AFF_LIGHT_SENSITIVE 50
#define AFF_DEATH 51
#define AFF_SENSE_DANGER 52
#define AFF_RESIST_FIRE 53
#define AFF_RESIST_COLD 54
#define AFF_HASTE 55
#define AFF_PROTECT_EVIL 56
#define AFF_PROTECT_GOOD 57
#define AFF_FLY 58
#define AFF_SENSE_LIFE 59
#define AFF_TRUE_SIGHT 60
#define AFF_RESIST_ACID 61
#define AFF_RESIST_SHOCK 62
#define AFF_THORN_SHIELD 63
#define AFF_CHOKING 64
#define AFF_ION_SHIELD 65
#define AFF_CAMOUFLAGE 66
#define AFF_SEE_CAMOUFLAGE 67
#define AFF_BURNING 0
#define AFF_FLAMING 1
#define AFF_POISONED 2
#define CLSS_MAGE 0
#define CLSS_CLERIC 1
#define CLSS_THIEF 2
#define CLSS_WARRIOR 3
#define CLSS_PALADIN 4
#define CLSS_RANGER 5
#define CLSS_PSIONIC 6
#define CLSS_MONK 7
#define CLSS_BARD 8
#define GROUP_NONE 0
#define LIQ_WATER 0
#define LIQ_ACID 22
#define LIQ_POISON 23
#define LIQ_HOLY_WATER 24
#define NATION_NONE 0
#define NATION_IMMORTAL 1
#define NATION_SECOMBER 2
#define REL_NONE 0
/*
* VARIABLES
*/
#define ec extern class
ec Social_Type social_table [ MAX_PLYR_RACE+1 ][ MAX_SOCIAL ];
ec Spell_Act_Type spell_act_table [ MAX_SPELL_ACT ];
ec Liquid_Type liquid_table [ MAX_LIQUID ];
ec Town_Type town_table [ MAX_TOWN ];
ec Spell_Data spell_table [ MAX_SPELL ];
ec Skill_Type skill_table [ MAX_SKILL ];
ec Metal_Type material_table [ MAX_METAL ];
ec Nation_Data nation_table [ MAX_NATION ];
ec Group_Data group_table [ MAX_GROUP ];
ec Race_Data race_table [ MAX_RACE ];
ec Plyr_Race_Data plyr_race_table [ MAX_PLYR_RACE ];
ec Aff_Char_Type aff_char_table [ MAX_AFF_CHAR ];
ec Aff_Obj_Type aff_obj_table [ MAX_AFF_OBJ ];
ec Command_Type command_table [ MAX_COMMAND ];
ec Category_Data cmd_cat_table [ MAX_CMD_CAT ];
ec Clss_Type clss_table [ MAX_CLSS ];
ec Starting_Data starting_table [ MAX_CLSS+MAX_PLYR_RACE+1 ];
ec Tedit_Data tedit_table [ MAX_TABLE ];
ec Recipe_Data build_table [ MAX_BUILD ];
ec Category_Data help_cat_table [ MAX_HELP_CAT ];
ec Town_Type astral_table [ MAX_ASTRAL ];
ec religion_data religion_table [ MAX_RELIGION ];
ec alignment_data alignment_table [ MAX_ALIGNMENT ];
ec entry_data table_entry [ MAX_TABLE-MAX_PLYR_RACE ][ MAX_FIELD ];
#undef ec
extern const char** table_field [ MAX_TABLE ];
extern int table_max [ MAX_TABLE ];
/*
* FUNCTIONS
*/
void init_commands ( void );
void init_spells ( void );
void sort_socials ( void );