/************************************************************************** * 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;