/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | \\._.// * * -----------------------------------------------------------| (0...0) * * SMAUG 1.0 (C) 1994, 1995, 1996 by Derek Snider | ).:.( * * -----------------------------------------------------------| {o o} * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, | / ' ' \ * * Scryn, Rennard, Swordbearer, Gorog, Grishnakh and Tricops |~'~.VxvxV.~'~* * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * Mud constants module * ****************************************************************************/ #include <sys/types.h> #include <stdio.h> #include <time.h> #include "mud.h" /* undef these at EOF */ #define AM 95 #define AC 95 #define AT 85 #define AW 85 #define AV 95 #define AD 95 #define AR 90 #define AA 95 /* * Race table. */ const struct race_type race_table [MAX_RACE] = { /* race name DEF_AFF st dx ws in cn ch lk hp mn re su RESTRICTION LANGUAGE */ { "Human", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, LANG_COMMON }, { "Elf", AFF_DETECT_MAGIC, -1, 2, 0, 1,-1, 1, 0, -2,10, 0, 0, 0, LANG_ELVEN }, { "Dwarf", AFF_INFRARED, 1, 0, 1, 0, 2,-1, 0, 6,-6, 0, 0, (1 << CLASS_MAGE), LANG_DWARVEN }, { "Halfling", AFF_SNEAK, -2, 1, 0, 0, 1, 0, 0, -3,10, 0, 0, (1 << CLASS_MAGE) | (1 << CLASS_DRUID) | (1 << CLASS_CLERIC) | (1 << CLASS_AUGURER), LANG_HALFLING }, { "Pixie", AFF_FLYING, -4, 3, 0,-1,-2, 3, 0, -5,40, 0, 0, (1 << CLASS_VAMPIRE) | (1 << CLASS_WARRIOR) | (1 << CLASS_AUGURER), LANG_PIXIE }, { "_Vampire_", AFF_INFRARED, 1, 0, 0, 0, 2,-2, 0, 0, LANG_COMMON }, /* race name DEF_AFF st dx ws in cn ch lk hp mn re su RESTRICTION LANGUAGE */ { "Half-Ogre", AFF_INFRARED, 2,-3,-1,-2, 3,-4, 0, 5,-8, 0, 0, (1 << CLASS_MAGE) | (1 << CLASS_CLERIC) | (1 << CLASS_DRUID) | (1 << CLASS_AUGURER) | (1 << CLASS_RANGER) , LANG_OGRE }, { "Half-Orc", AFF_INFRARED, 1,-2,-2,-1, 2,-4, 0, 6,-9, 0, 0, (1 << CLASS_MAGE) | (1 << CLASS_CLERIC) | (1 << CLASS_DRUID) | (1 << CLASS_AUGURER) | (1 << CLASS_RANGER) , LANG_ORCISH }, { "Half-Troll", AFF_INFRARED, 3,-2,-2, 1, 2,-5, 0, 7,-9, 0, 0, (1 << CLASS_MAGE) | (1 << CLASS_CLERIC) | (1 << CLASS_DRUID) | (1 << CLASS_RANGER), LANG_TROLLISH }, { "Half-Elf", AFF_INFRARED, -1, 1, 0, 1,-1, 1, 0, 3, 3, 0, 0, (1 << CLASS_AUGURER), LANG_ELVEN }, { "Gith", AFF_DETECT_INVIS, 1, 2,-1, 1,-2,-5, 1, 4,20, 0, 0, (1 << CLASS_DRUID) | (1 << CLASS_RANGER), LANG_GITH } }; char * const npc_race [MAX_NPC_RACE] = { "human", "elf", "dwarf", "halfling", "pixie", "vampire", "half-ogre", "half-orc", "half-troll", "half-elf", "gith", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "ant", "ape", "baboon", "bat", "bear", "bee", "beetle", "boar", "bugbear", "cat", "dog", "dragon", "ferret", "fly", "gargoyle", "gelatin", "ghoul", "gnoll", "gnome", "goblin", "golem", "gorgon", "harpy", "hobgoblin", "kobold", "lizardman", "locust", "lycanthrope", "minotaur", "mold", "mule", "neanderthal", "ooze", "orc", "rat", "rustmonster", "shadow", "shapeshifter", "shrew", "shrieker", "skeleton", "slime", "snake", "spider", "stirge", "thoul", "troglodyte", "undead", "wight", "wolf", "worm", "zombie", "bovine", "canine", "feline", "porcine", "mammal", "rodent", "avis", "reptile", "amphibian", "fish", "crustacean", "insect", "spirit", "magical", "horse", "animal", "humanoid", "monster", "god" }; char * const npc_class [MAX_NPC_CLASS] = { "mage", "cleric", "thief", "warrior", "vampire", "druid", "ranger", "augurer", "pc8", "pc9", "pc10", "pc11", "pc12", "pc13", "pc14", "pc15", "pc16", "pc17", "pc18", "pc19", "baker", "butcher", "blacksmith", "mayor", "king", "queen" }; /* * 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, 140, 12 }, { 0, 0, 140, 13 }, /* 13 */ { 0, 1, 170, 14 }, { 1, 1, 170, 15 }, /* 15 */ { 1, 2, 195, 16 }, { 2, 3, 220, 22 }, { 2, 4, 250, 25 }, /* 18 */ { 3, 5, 400, 30 }, { 3, 6, 500, 35 }, /* 20 */ { 4, 7, 600, 40 }, { 5, 7, 700, 45 }, { 6, 8, 800, 50 }, { 8, 10, 900, 55 }, { 10, 12, 999, 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 }, { 85 }, { 99 } /* 25 */ }; const struct wis_app_type wis_app [26] = { { 0 }, /* 0 */ { 0 }, /* 1 */ { 0 }, { 0 }, /* 3 */ { 0 }, { 1 }, /* 5 */ { 1 }, { 1 }, { 1 }, { 2 }, { 2 }, /* 10 */ { 2 }, { 2 }, { 2 }, { 2 }, { 3 }, /* 15 */ { 3 }, { 4 }, { 5 }, /* 18 */ { 5 }, { 5 }, /* 20 */ { 6 }, { 6 }, { 6 }, { 6 }, { 7 } /* 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 */ }; const struct cha_app_type cha_app [26] = { { - 60 }, /* 0 */ { - 50 }, /* 1 */ { - 50 }, { - 40 }, { - 30 }, { - 20 }, /* 5 */ { - 10 }, { - 5 }, { - 1 }, { 0 }, { 0 }, /* 10 */ { 0 }, { 0 }, { 0 }, { 1 }, { 5 }, /* 15 */ { 10 }, { 20 }, { 30 }, { 40 }, { 50 }, /* 20 */ { 60 }, { 70 }, { 80 }, { 90 }, { 99 } /* 25 */ }; /* Have to fix this up - not exactly sure how it works (Scryn) */ const struct lck_app_type lck_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 */ }; /* * Liquid properties. * Used in #OBJECT section of area file. */ const struct liq_type liq_table [LIQ_MAX] = { { "water", "clear", { 0, 1, 10 } }, /* 0 */ { "beer", "amber", { 3, 2, 5 } }, { "wine", "rose", { 5, 2, 5 } }, { "ale", "brown", { 2, 2, 5 } }, { "dark ale", "dark", { 1, 2, 5 } }, { "whisky", "golden", { 6, 1, 4 } }, /* 5 */ { "lemonade", "pink", { 0, 1, 8 } }, { "firebreather", "boiling", { 10, 0, 0 } }, { "local specialty", "everclear", { 3, 3, 3 } }, { "slime mold juice", "green", { 0, 4, -8 } }, { "milk", "white", { 0, 3, 6 } }, /* 10 */ { "tea", "tan", { 0, 1, 6 } }, { "coffee", "black", { 0, 1, 6 } }, { "blood", "red", { 0, 2, -1 } }, { "salt water", "clear", { 0, 1, -2 } }, { "cola", "cherry", { 0, 1, 5 } }, /* 15 */ { "mead", "honey color", { 4, 2, 5 } }, /* 16 */ { "grog", "thick brown", { 3, 2, 5 } } /* 17 */ }; char * const attack_table [13] = { "hit", "slice", "stab", "slash", "whip", "claw", "blast", "pound", "crush", "grep", "bite", "pierce", "suction" }; /* * The skill and spell table. * Slot numbers must never be changed as they appear in #OBJECTS sections. */ #define SLOT(n) n #define LI LEVEL_IMMORTAL #undef AM #undef AC #undef AT #undef AW #undef AV #undef AD #undef AR #undef AA #undef LI