1stMUD/corefiles/
1stMUD/gods/
1stMUD/player/
1stMUD/win32/
1stMUD/win32/ROM/
/**************************************************************************
*  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
*  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
*                                                                         *
*  Merc Diku Mud improvements 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          *
*  benefiting.  We hope that you share your changes too.  What goes       *
*  around, comes around.                                                  *
***************************************************************************
*       ROM 2.4 is copyright 1993-1998 Russ Taylor                        *
*       ROM has been brought to you by the ROM consortium                 *
*           Russ Taylor (rtaylor@hypercube.org)                           *
*           Gabrielle Taylor (gtaylor@hypercube.org)                      *
*           Brian Moore (zump@rom.org)                                    *
*       By using this code, you have agreed to follow the terms of the    *
*       ROM license, in the file Rom24/doc/rom.license                    *
***************************************************************************
*       1stMUD ROM Derivative (c) 2001-2002 by Ryan Jennings              *
*            http://1stmud.dlmud.com/  <r-jenn@shaw.ca>                   *
***************************************************************************/

#include <sys/types.h>
#include <stdio.h>
#include <time.h>
#include "merc.h"
#include "magic.h"
#include "interp.h"

/* item type list */
const struct item_type item_table[] = {
	{ITEM_LIGHT, "light"},
	{ITEM_SCROLL, "scroll"},
	{ITEM_WAND, "wand"},
	{ITEM_STAFF, "staff"},
	{ITEM_WEAPON, "weapon"},
	{ITEM_TREASURE, "treasure"},
	{ITEM_ARMOR, "armor"},
	{ITEM_POTION, "potion"},
	{ITEM_CLOTHING, "clothing"},
	{ITEM_FURNITURE, "furniture"},
	{ITEM_TRASH, "trash"},
	{ITEM_CONTAINER, "container"},
	{ITEM_DRINK_CON, "drink"},
	{ITEM_KEY, "key"},
	{ITEM_FOOD, "food"},
	{ITEM_MONEY, "money"},
	{ITEM_BOAT, "boat"},
	{ITEM_CORPSE_NPC, "npc_corpse"},
	{ITEM_CORPSE_PC, "pc_corpse"},
	{ITEM_FOUNTAIN, "fountain"},
	{ITEM_PILL, "pill"},
	{ITEM_PROTECT, "protect"},
	{ITEM_MAP, "map"},
	{ITEM_PORTAL, "portal"},
	{ITEM_WARP_STONE, "warp_stone"},
	{ITEM_ROOM_KEY, "room_key"},
	{ITEM_GEM, "gem"},
	{ITEM_JEWELRY, "jewelry"},
	{ITEM_JUKEBOX, "jukebox"},
	{0, NULL}
};

/* weapon selection table */
const struct weapon_type weapon_table[] = {
	{"sword", OBJ_VNUM_SCHOOL_SWORD, WEAPON_SWORD, &gsn_sword},
	{"mace", OBJ_VNUM_SCHOOL_MACE, WEAPON_MACE, &gsn_mace},
	{"dagger", OBJ_VNUM_SCHOOL_DAGGER, WEAPON_DAGGER, &gsn_dagger},
	{"axe", OBJ_VNUM_SCHOOL_AXE, WEAPON_AXE, &gsn_axe},
	{"staff", OBJ_VNUM_SCHOOL_STAFF, WEAPON_SPEAR, &gsn_spear},
	{"flail", OBJ_VNUM_SCHOOL_FLAIL, WEAPON_FLAIL, &gsn_flail},
	{"whip", OBJ_VNUM_SCHOOL_WHIP, WEAPON_WHIP, &gsn_whip},
	{"polearm", OBJ_VNUM_SCHOOL_POLEARM, WEAPON_POLEARM, &gsn_polearm},
	{NULL, 0, 0, NULL}
};

/* wiznet table and prototype for future flag setting */
const struct wiznet_type wiznet_table[] = {
	{"on", WIZ_ON, IM},
	{"prefix", WIZ_PREFIX, IM},
	{"ticks", WIZ_TICKS, IM},
	{"logins", WIZ_LOGINS, IM},
	{"sites", WIZ_SITES, L4},
	{"links", WIZ_LINKS, L7},
	{"newbies", WIZ_NEWBIE, IM},
	{"spam", WIZ_SPAM, L5},
	{"deaths", WIZ_DEATHS, IM},
	{"resets", WIZ_RESETS, L4},
	{"mobdeaths", WIZ_MOBDEATHS, L4},
	{"flags", WIZ_FLAGS, L5},
	{"penalties", WIZ_PENALTIES, L5},
	{"saccing", WIZ_SACCING, L5},
	{"levels", WIZ_LEVELS, IM},
	{"load", WIZ_LOAD, L2},
	{"restore", WIZ_RESTORE, L2},
	{"snoops", WIZ_SNOOPS, L2},
	{"switches", WIZ_SWITCHES, L2},
	{"secure", WIZ_SECURE, L1},
	{"bugs", WIZ_BUGS, L3},
	{NULL, 0, 0}
};

/* attack table  -- not very organized :( */
const struct attack_type attack_table[MAX_DAMAGE_MESSAGE] = {
	{"none", "hit", -1},		/*  0 */
	{"slice", "slice", DAM_SLASH},
	{"stab", "stab", DAM_PIERCE},
	{"slash", "slash", DAM_SLASH},
	{"whip", "whip", DAM_SLASH},
	{"claw", "claw", DAM_SLASH},	/*  5 */
	{"blast", "blast", DAM_BASH},
	{"pound", "pound", DAM_BASH},
	{"crush", "crush", DAM_BASH},
	{"grep", "grep", DAM_SLASH},
	{"bite", "bite", DAM_PIERCE},	/* 10 */
	{"pierce", "pierce", DAM_PIERCE},
	{"suction", "suction", DAM_BASH},
	{"beating", "beating", DAM_BASH},
	{"digestion", "digestion", DAM_ACID},
	{"charge", "charge", DAM_BASH},	/* 15 */
	{"slap", "slap", DAM_BASH},
	{"punch", "punch", DAM_BASH},
	{"wrath", "wrath", DAM_ENERGY},
	{"magic", "magic", DAM_ENERGY},
	{"divine", "divine power", DAM_HOLY},	/* 20 */
	{"cleave", "cleave", DAM_SLASH},
	{"scratch", "scratch", DAM_PIERCE},
	{"peck", "peck", DAM_PIERCE},
	{"peckb", "peck", DAM_BASH},
	{"chop", "chop", DAM_SLASH},	/* 25 */
	{"sting", "sting", DAM_PIERCE},
	{"smash", "smash", DAM_BASH},
	{"shbite", "shocking bite", DAM_LIGHTNING},
	{"flbite", "flaming bite", DAM_FIRE},
	{"frbite", "freezing bite", DAM_COLD},	/* 30 */
	{"acbite", "acidic bite", DAM_ACID},
	{"chomp", "chomp", DAM_PIERCE},
	{"drain", "life drain", DAM_NEGATIVE},
	{"thrust", "thrust", DAM_PIERCE},
	{"slime", "slime", DAM_ACID},
	{"shock", "shock", DAM_LIGHTNING},
	{"thwack", "thwack", DAM_BASH},
	{"flame", "flame", DAM_FIRE},
	{"chill", "chill", DAM_COLD},
	{NULL, NULL, 0}
};

struct race_type *race_table;

struct class_type *class_table;

/*
 * Class table.

const struct class_type class_table[] = {
	{
	 "mage", "Mag", STAT_INT, OBJ_VNUM_SCHOOL_DAGGER,
	 {3018, 9618}, 75, 20, 6, 6, 8, TRUE,
	 "mage basics", "mage default"},

	{
	 "cleric", "Cle", STAT_WIS, OBJ_VNUM_SCHOOL_MACE,
	 {3003, 9619}, 75, 20, 2, 7, 10, TRUE,
	 "cleric basics", "cleric default"},

	{
	 "thief", "Thi", STAT_DEX, OBJ_VNUM_SCHOOL_DAGGER,
	 {3028, 9639}, 75, 20, -4, 8, 13, FALSE,
	 "thief basics", "thief default"},

	{
	 "warrior", "War", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
	 {3022, 9633}, 75, 20, -10, 11, 15, FALSE,
	 "warrior basics", "warrior default"},

	{
	 "paladin", "Pal", STAT_WIS, OBJ_VNUM_SCHOOL_MACE,
	 {3003, 9619}, 75, 20, 2, 7, 10, TRUE,
	 "paladin basics", "paladin default"},

	{
	 "ranger", "Ran", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
	 {3022, 9633}, 75, 20, -10, 11, 15, FALSE,
	 "ranger basics", "ranger default"},

	{
	 NULL, "", -1, -1,
	 {0, 0}, 0, 0, 0, 0, 0, FALSE,
	 NULL, NULL}
};
 */
/*
 * Attribute bonus tables.
 */
const struct str_app_type str_app[26] = {
	{-5, -4, 0, 0},				/* 0  */
	{-5, -4, 3, 1},				/* 1  */
	{-3, -2, 3, 2},
	{-3, -1, 10, 3},			/* 3  */
	{-2, -1, 25, 4},
	{-2, -1, 55, 5},			/* 5  */
	{-1, 0, 80, 6},
	{-1, 0, 90, 7},
	{0, 0, 100, 8},
	{0, 0, 100, 9},
	{0, 0, 115, 10},			/* 10  */
	{0, 0, 115, 11},
	{0, 0, 130, 12},
	{0, 0, 130, 13},			/* 13  */
	{0, 1, 140, 14},
	{1, 1, 150, 15},			/* 15  */
	{1, 2, 165, 16},
	{2, 3, 180, 22},
	{2, 3, 200, 25},			/* 18  */
	{3, 4, 225, 30},
	{3, 5, 250, 35},			/* 20  */
	{4, 6, 300, 40},
	{4, 6, 350, 45},
	{5, 7, 400, 50},
	{5, 8, 450, 55},
	{6, 9, 500, 60}				/* 25   */
};

const struct int_app_type int_app[26] = {
	{3},						/*  0 */
	{5},						/*  1 */
	{7},
	{8},						/*  3 */
	{9},
	{10},						/*  5 */
	{11},
	{12},
	{13},
	{15},
	{17},						/* 10 */
	{19},
	{22},
	{25},
	{28},
	{31},						/* 15 */
	{34},
	{37},
	{40},						/* 18 */
	{44},
	{49},						/* 20 */
	{55},
	{60},
	{70},
	{80},
	{85}						/* 25 */
};

const struct wis_app_type wis_app[26] = {
	{0},						/*  0 */
	{0},						/*  1 */
	{0},
	{0},						/*  3 */
	{0},
	{1},						/*  5 */
	{1},
	{1},
	{1},
	{1},
	{1},						/* 10 */
	{1},
	{1},
	{1},
	{1},
	{2},						/* 15 */
	{2},
	{2},
	{3},						/* 18 */
	{3},
	{3},						/* 20 */
	{3},
	{4},
	{4},
	{4},
	{5}							/* 25 */
};

const struct dex_app_type dex_app[26] = {
	{60},						/* 0 */
	{50},						/* 1 */
	{50},
	{40},
	{30},
	{20},						/* 5 */
	{10},
	{0},
	{0},
	{0},
	{0},						/* 10 */
	{0},
	{0},
	{0},
	{0},
	{-10},						/* 15 */
	{-15},
	{-20},
	{-30},
	{-40},
	{-50},						/* 20 */
	{-60},
	{-75},
	{-90},
	{-105},
	{-120}						/* 25 */
};

const struct con_app_type con_app[26] = {
	{-4, 20},					/*  0 */
	{-3, 25},					/*  1 */
	{-2, 30},
	{-2, 35},					/*  3 */
	{-1, 40},
	{-1, 45},					/*  5 */
	{-1, 50},
	{0, 55},
	{0, 60},
	{0, 65},
	{0, 70},					/* 10 */
	{0, 75},
	{0, 80},
	{0, 85},
	{0, 88},
	{1, 90},					/* 15 */
	{2, 95},
	{2, 97},
	{3, 99},					/* 18 */
	{3, 99},
	{4, 99},					/* 20 */
	{4, 99},
	{5, 99},
	{6, 99},
	{7, 99},
	{8, 99}						/* 25 */
};

/*
 * Liquid properties.
 * Used in world.obj.
 */
const struct liq_type liq_table[] = {
/*    name			color	proof, full, thirst, food, ssize */
	{"water", "clear", {0, 1, 10, 0, 16}},
	{"beer", "amber", {12, 1, 8, 1, 12}},
	{"red wine", "burgundy", {30, 1, 8, 1, 5}},
	{"ale", "brown", {15, 1, 8, 1, 12}},
	{"dark ale", "dark", {16, 1, 8, 1, 12}},

	{"whisky", "golden", {120, 1, 5, 0, 2}},
	{"lemonade", "pink", {0, 1, 9, 2, 12}},
	{"firebreather", "boiling", {190, 0, 4, 0, 2}},
	{"local specialty", "clear", {151, 1, 3, 0, 2}},
	{"slime mold juice", "green", {0, 2, -8, 1, 2}},

	{"milk", "white", {0, 2, 9, 3, 12}},
	{"tea", "tan", {0, 1, 8, 0, 6}},
	{"coffee", "black", {0, 1, 8, 0, 6}},
	{"blood", "red", {0, 2, -1, 2, 6}},
	{"salt water", "clear", {0, 1, -2, 0, 1}},

	{"coke", "brown", {0, 2, 9, 2, 12}},
	{"root beer", "brown", {0, 2, 9, 2, 12}},
	{"elvish wine", "green", {35, 2, 8, 1, 5}},
	{"white wine", "golden", {28, 1, 8, 1, 5}},
	{"champagne", "golden", {32, 1, 8, 1, 5}},

	{"mead", "honey-colored", {34, 2, 8, 2, 12}},
	{"rose wine", "pink", {26, 1, 8, 1, 5}},
	{"benedictine wine", "burgundy", {40, 1, 8, 1, 5}},
	{"vodka", "clear", {130, 1, 5, 0, 2}},
	{"cranberry juice", "red", {0, 1, 9, 2, 12}},

	{"orange juice", "orange", {0, 2, 9, 3, 12}},
	{"absinthe", "green", {200, 1, 4, 0, 2}},
	{"brandy", "golden", {80, 1, 5, 0, 4}},
	{"aquavit", "clear", {140, 1, 5, 0, 2}},
	{"schnapps", "clear", {90, 1, 5, 0, 2}},

	{"icewine", "purple", {50, 2, 6, 1, 5}},
	{"amontillado", "burgundy", {35, 2, 8, 1, 5}},
	{"sherry", "red", {38, 2, 7, 1, 5}},
	{"framboise", "red", {50, 1, 7, 1, 5}},
	{"rum", "amber", {151, 1, 4, 0, 2}},

	{"cordial", "clear", {100, 1, 5, 0, 2}},
	{NULL, NULL, {0, 0, 0, 0, 0}}
};

struct skill_type *skill_table;

struct group_type *group_table;