/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * Envy Diku Mud improvements copyright (C) 1994 by Michael Quan, David * * Love, Guilherme 'Willie' Arnold, and Mitchell Tse. * * * * EnvyMud 2.0 improvements copyright (C) 1995 by Michael Quan and * * Mitchell Tse. * * * * EnvyMud 2.2 improvements copyright (C) 1996, 1997 by Michael Quan. * * * * In order to use any part of this Envy Diku Mud, you must comply with * * the original Diku license in 'license.doc', the Merc license in * * 'license.txt', as well as the Envy license in 'license.nvy'. * * In particular, you may not remove either of these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ #if defined( macintosh ) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <time.h> #include "merc.h" /* * Race types */ // Races must be kept in order and player-available races must be first // in the list. If a race becomes player available, move it to the first // part of the race definitions - Veygoth. const struct race_type race_table [MAX_RACE] = { // 1 { "Human", "&+CHuman&n", "PH", RACE_PC_AVAIL | RACE_WEAPON_WIELD, SIZE_MEDIUM, 100, 100, 100, 100, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON, RACEWAR_GOOD, }, // 2 { "Barbarian", "&+BBarbarian&n", "PB", RACE_PC_AVAIL | RACE_WEAPON_WIELD | RACE_BODYSLAM, SIZE_LARGE, 125, 85, 85, 100, 125, 90, 90, 90, 100, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON, RACEWAR_GOOD, }, // 3 { "Grey Elf", "&+cGrey Elf&n", "PE", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_AVERAGE, 90, 120, 110, 100, 85, 110, 100, 100, 100, 0, 4, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_CHARM, RIS_NONE, RIS_IRON, LANG_ELVEN, RACEWAR_GOOD, }, // 4 { "Rakshasa", "&+RRak&+Yshasa&n", "RA", RACE_PC_AVAIL | RACE_ULTRAVISION | RACE_WEAPON_WIELD, SIZE_AVERAGE, 85, 122, 112, 101, 85, 110, 100, 100, 100, 0, 4, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_CHARM, RIS_NONE, RIS_IRON, LANG_ELVEN, RACEWAR_EVIL, }, // 5 { "Half-Elf", "&+cHalf&+C-Elf&n", "P2", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_MEDIUM, 99, 105, 101, 105, 95, 105, 90, 100, 100, 0, 2, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_CHARM | RIS_POISON, RIS_NONE, RIS_IRON, LANG_ELVEN, RACEWAR_GOOD, }, // 6 { "Flind", "&+MFlind&n", "FL", RACE_PC_AVAIL | RACE_ULTRAVISION | RACE_WEAPON_WIELD, SIZE_MEDIUM, 101, 103, 99, 102, 98, 102, 90, 100, 100, 0, 2, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_CHARM | RIS_POISON, RIS_NONE, RIS_IRON, LANG_ELVEN, RACEWAR_EVIL, }, // 7 { "Drow", "&+mDrow&n", "PL", RACE_PC_AVAIL | RACE_ULTRAVISION | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_PETITE, 80, 125, 110, 105, 70, 120, 70, 110, 100, 0, 4, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_MAGIC, RIS_NONE, RIS_NONE, LANG_DROW, RACEWAR_EVIL, }, // 8 { "Dwarf", "&+YDwarf&n", "PM", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_PETITE, 120, 80, 105, 85, 125, 95, 80, 95, 100, 0, 0, 0, 0, 1, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_POISON | RIS_DISEASE, RIS_NONE, RIS_DROWNING, LANG_DWARVEN, RACEWAR_GOOD, }, // 9 { "Duergar", "&+rDuergar&n", "PD", RACE_PC_AVAIL | RACE_ULTRAVISION | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_PETITE, 120, 80, 110, 90, 120, 100, 75, 85, 100, 0, 0, 0, 0, 1, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_POISON | RIS_DISEASE, RIS_NONE, RIS_DROWNING, LANG_DWARVEN, RACEWAR_EVIL, }, // 10 { "Halfling", "&+yHalfling&n", "PF", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_PETITE, 65, 100, 95, 140, 80, 140, 100, 100, 150, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_POISON | RIS_DISEASE | RIS_MAGIC, RIS_NONE, RIS_NONE, LANG_HALFLING, RACEWAR_GOOD, }, // 11 { "Troll", "&+gTroll&n", "PT", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_TITANIC, 120, 70, 75, 80, 140, 80, 65, 70, 100, 10, 0, 0, 0, 8, "fist", "walks", "Human Elf Halfelf Dwarf Halfdwarf Hobbit Vampire Werewolf Gnome", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_CLAWS | PART_FANGS, RIS_CHARM | RIS_BASH, RIS_NONE, RIS_FIRE | RIS_ACID, LANG_TROLLISH, RACEWAR_EVIL, }, // 12 { "Ogre", "&+bOgre&n", "PO", RACE_PC_AVAIL | RACE_WEAPON_WIELD | RACE_BODYSLAM | RACE_INFRAVISION, SIZE_HUGE, 160, 60, 65, 70, 150, 70, 70, 70, 100, 2, -3, -1, 0, 2, "fist", "lumbers", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MENTAL, LANG_OGRE, RACEWAR_EVIL, }, // 13 { "Orc", "&+LOrc&n", "HO", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_LARGE, 110, 95, 101, 99, 105, 99, 90, 99, 99, 2, -1, -1, 0, 1, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_DISEASE, RIS_NONE, RIS_NONE, LANG_ORCISH, RACEWAR_EVIL, }, // 14 { "Gnome", "&+RGnome&n", "PG", RACE_PC_AVAIL | RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_PETITE, 60, 130, 110, 105, 85, 100, 90, 110, 100, 0, 4, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_POISON | RIS_DISEASE | RIS_MAGIC, RIS_NONE, RIS_NONE, LANG_GNOMISH, RACEWAR_GOOD, }, // 15 { "Centaur", "&+gCen&+Ltaur&n", "CT", RACE_PC_AVAIL | RACE_WEAPON_WIELD | RACE_BODYSLAM, SIZE_LARGE, 140, 70, 80, 85, 145, 90, 80, 100, 100, 3, 0, -1, 0, 3, "fist", "trots", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TAIL, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON, RACEWAR_GOOD, }, // 16 { "Githyanki", "&+GGith&+Wyanki&n", "GI", RACE_PC_AVAIL | RACE_WEAPON_WIELD | RACE_ULTRAVISION, SIZE_MEDIUM, 90, 120, 110, 90, 90, 90, 70, 140, 90, 0, 4, 0, 0, 0, "punch", "walks", "Illithid", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_GITH, RACEWAR_EVIL, }, // 17 { "Goblin", "&+GGoblin&n", "HG", RACE_INFRAVISION | RACE_WEAPON_WIELD | RACE_PC_AVAIL, SIZE_PETITE, 80, 105, 105, 110, 90, 110, 70, 70, 100, 0, 0, 0, 0, 0, "punch", "walks", "Elf Halfelf Dwarf Halfdwarf Hobbit Vampire Werewolf Gnome", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TUSKS, RIS_DISEASE, RIS_NONE, RIS_MAGIC, LANG_GOBLIN, RACEWAR_EVIL, }, // End of PC available races. If you want to add a PC available race, // you will need to place them before this comment, increase MAX_PC_RACE // in merc.h by one, and edit the class_avail chart in this file do // determine what classes they get - Veygoth // 18 { "Minotaur", "&+rMino&+Ltaur&n", "MT", RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD | RACE_BODYSLAM | RACE_CHARGE, SIZE_LARGE, 145, 80, 90, 90, 135, 90, 80, 100, 100, 3, 0, -1, 0, 3, "fist", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TAIL, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON ,RACEWAR_NONE, }, // 19 { "Thri-Kreen", "&+GThri-&+YKreen&n", "TK", RACE_WEAPON_WIELD, SIZE_MEDIUM, 105, 50, 50, 90, 70, 115, 50, 50, 50, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON ,RACEWAR_NONE, }, // 20 { "Aquatic Elf", "&+bAquatic Elf&n", "PA", RACE_INFRAVISION | RACE_WEAPON_WIELD | RACE_SWIM, SIZE_AVERAGE, 95, 105, 120, 105, 90, 115, 100, 95, 100, 0, 4, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_CHARM, RIS_NONE, RIS_IRON, LANG_ELVEN ,RACEWAR_NONE, }, // 21 { "Sahaugin", "&+bSahau&+ggin&n", "SA", RACE_INFRAVISION | RACE_WEAPON_WIELD | RACE_SWIM, SIZE_AVERAGE, 115, 85, 95, 105, 90, 115, 100, 95, 100, 0, 4, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_CHARM, RIS_NONE, RIS_IRON, LANG_ELVEN ,RACEWAR_NONE, }, // 22 { "Half-Orc", "&+cHalf-&+LOrc&n", "H2", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_LARGE, 105, 98, 100, 98, 102, 98, 94, 98, 98, 2, -1, -1, 0, 1, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_DISEASE, RIS_NONE, RIS_NONE, LANG_ORCISH, RACEWAR_NONE, }, // 23 { "Half-Dwarf", "&+CHalf-&+YDwarf&n", "D2", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_PETITE, 110, 95, 100, 95, 110, 95, 95, 100, 100, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_POISON | RIS_DISEASE, RIS_NONE, RIS_DROWNING, LANG_DWARVEN ,RACEWAR_NONE, }, // 24 { "Half-Kobold", "&+CHalf-&+rKobold&n", "K2", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_PETITE, 85, 85, 85, 110, 95, 110, 65, 75, 110, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TAIL, RIS_POISON, RIS_NONE, RIS_MAGIC, LANG_KOBOLD ,RACEWAR_NONE, }, // 25 { "Giant", "Giant", "G", RACE_WEAPON_WIELD, SIZE_HUGE, 170, 70, 100, 80, 130, 90, 90, 80, 100, 3, -5, -2, 2, 4, "fist", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_FIRE | RIS_COLD, RIS_NONE, RIS_MENTAL, LANG_COMMON ,RACEWAR_NONE, }, // 26 { "Illithid", "&+mIllithid&n", "MF", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_MEDIUM, 60, 160, 130, 80, 70, 90, 70, 160, 90, 0, 6, 0, 0, 0, "punch", "walks", "Githyanki", PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_TENTACLES, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON ,RACEWAR_NONE, }, // 27 { "Neogi", "&+LN&+me&+Lo&+mg&+Li&n", "NE", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_MEDIUM, 75, 160, 135, 90, 75, 95, 40, 170, 100, 0, 6, 0, 0, 0, "punch", "walks", "", PART_LEGS | PART_HEART | PART_GUTS | PART_FEET, RIS_NONE, RIS_NONE, RIS_NONE, LANG_COMMON ,RACEWAR_NONE, }, // 28 { "Kobold", "&+rKobold&n", "K", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_PETITE, 80, 80, 85, 120, 90, 120, 60, 70, 115, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TAIL, RIS_POISON, RIS_NONE, RIS_MAGIC, LANG_KOBOLD ,RACEWAR_NONE, }, // 29 { "Hobgoblin", "Hobgoblin", "HB", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_MEDIUM, 110, 90, 85, 95, 115, 95, 90, 90, 90, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_DISEASE | RIS_POISON, RIS_NONE, RIS_NONE, LANG_COMMON ,RACEWAR_NONE, }, // 30 { "Humanoid", "Humanoid", "H", RACE_INFRAVISION | RACE_WEAPON_WIELD, SIZE_MEDIUM, 100, 90, 85, 95, 100, 95, 90, 90, 90, 0, 0, 0, 0, 0, "punch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_DISEASE | RIS_POISON, RIS_NONE, RIS_NONE, LANG_COMMON ,RACEWAR_NONE, }, // 31 { "Demon", "&+rDemon&n", "X", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_GARGANTUAN, 190, 130, 150, 100, 170, 100, 10, 140, 110, 15, 0, -10, 0, 10, "claw", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS | PART_TAIL | PART_CLAWS | PART_FANGS | PART_SCALES, RIS_FIRE | RIS_BASH | RIS_CHARM, RIS_NONE, RIS_PIERCE | RIS_COLD, LANG_DRAGON ,RACEWAR_NONE, }, // 32 { "God", "&+WGod&n", "GD", RACE_WATERBREATH | RACE_FLY | RACE_SWIM | RACE_WATERWALK | RACE_PASSDOOR | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_PROTECTION | RACE_SANCT | RACE_WEAPON_WIELD, SIZE_GARGANTUAN, 250, 250, 250, 250, 250, 250, 250, 250, 250, 20, 0, 10, 0, 0, "smite", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_MAGIC | RIS_POISON | RIS_MENTAL | RIS_CHARM, RIS_DROWNING | RIS_DISEASE, RIS_NONE, LANG_GOD ,RACEWAR_NONE, }, // 33 { "Devil", "&+rDevil&n", "Y", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_GARGANTUAN, 180, 160, 180, 100, 150, 120, 140, 170, 120, 15, 0, -10, 0, 10, "claw", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS | PART_TAIL | PART_CLAWS | PART_FANGS | PART_SCALES, RIS_FIRE | RIS_BASH | RIS_CHARM, RIS_NONE, RIS_PIERCE | RIS_COLD, LANG_DRAGON ,RACEWAR_NONE, }, // 34 { "Faerie", "&+RFae&+Yrie&n", "HF", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_MINUTE, 40, 130, 130, 170, 40, 150, 130, 120, 110, 0, 0, 7, 0, 0, "punch", "flutters", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS, RIS_MAGIC, RIS_NONE, RIS_NONE, LANG_PIXIE ,RACEWAR_NONE, }, // 35 { "Vampire", "&+mVam&+Lpire&n", "UV", RACE_FLY | RACE_PASSDOOR | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_MEDIUM, 135, 120, 110, 110, 120, 110, 130, 130, 100, 10, 3, 3, -1, 10, "claw", "walks", "Human Elf Halfelf Drow Dwarf Halfdwarf Hobbit Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Werewolf Goblin Faerie Gnome", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_FANGS, RIS_DISEASE | RIS_BLACK_MANA, RIS_POISON, RIS_DROWNING | RIS_WOOD | RIS_LIGHT | RIS_WHITE_MANA, LANG_COMMON ,RACEWAR_NONE, }, // 36 { "Werewolf", "&+yWere&+Lwolf&n", "LW", RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_MEDIUM, 145, 90, 90, 120, 160, 120, 70, 110, 100, 10, 0, 5, 0, 5, "claw", "walks", "Human Elf Halfelf Drow Dwarf Halfdwarf Hobbit Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Vampire Goblin Faerie Gnome", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TAIL | PART_CLAWS | PART_FANGS, RIS_BASH, RIS_NONE, RIS_SILVER, LANG_SPIRITUAL ,RACEWAR_NONE, }, // 37 { "Dragon", "&+gDragon&n", "D", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_GARGANTUAN, 200, 140, 170, 90, 140, 90, 110, 120, 100, 15, 0, -10, 0, 10, "claw", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS | PART_TAIL | PART_CLAWS | PART_FANGS | PART_SCALES, RIS_FIRE | RIS_BASH | RIS_CHARM, RIS_NONE, RIS_PIERCE | RIS_COLD, LANG_DRAGON ,RACEWAR_NONE, }, // 38 { "Beholder", "&+LBe&+mhol&+Lder&n", "BH", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN, SIZE_HUGE, 110, 160, 160, 90, 120, 100, 105, 160, 100, 15, 0, -10, 0, 10, "bite", "floats", "", PART_HEAD | PART_HEART | PART_BRAINS | PART_GUTS | PART_EYE | PART_SCALES | PART_EYESTALKS, RIS_FIRE | RIS_BASH | RIS_CHARM, RIS_NONE, RIS_PIERCE | RIS_COLD, LANG_DRAGON ,RACEWAR_NONE, }, // End of coin-carrying races. If you want to have a race carry money on // them, you will have to put it above this comment and augment the // MAX_COIN_RACE in merc.h - Veygoth { "Golem", "Golem", "OG", RACE_WEAPON_WIELD | RACE_MUTE, SIZE_HUGE, 170, 50, 50, 80, 140, 90, 90, 80, 100, 3, -5, -2, 2, 4, "fist", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_FIRE | RIS_COLD, RIS_NONE, RIS_MENTAL, LANG_COMMON ,RACEWAR_NONE, }, { "Dracolich", "&+gDraco&+Wlich&n", "UD", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_GARGANTUAN, 170, 90, 90, 90, 140, 90, 110, 120, 100, 15, 0, -10, 0, 10, "claw", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS | PART_TAIL | PART_CLAWS | PART_FANGS | PART_SCALES, RIS_FIRE | RIS_BASH | RIS_CHARM, RIS_NONE, RIS_PIERCE | RIS_COLD, LANG_DRAGON ,RACEWAR_NONE, }, { "Dragonkin", "&+gDragon&+Wkin&n", "DK", RACE_FLY | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_HUGE, 160, 110, 130, 90, 120, 90, 105, 110, 100, 15, 0, -10, 0, 10, "claw", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS | PART_TAIL | PART_CLAWS | PART_FANGS | PART_SCALES, RIS_FIRE | RIS_BASH | RIS_CHARM, RIS_NONE, RIS_PIERCE | RIS_COLD, LANG_DRAGON ,RACEWAR_NONE, }, { "Insect", "Insect", "I", RACE_MUTE, SIZE_MINUTE, 50, 10, 10, 80, 100, 100, 10, 10, 50, 0, 0, 5, 0, 0, "bite", "crawls", "", PART_HEAD | PART_LEGS | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_INSECTOID ,RACEWAR_NONE, }, { "Animal", "Animal", "A", RACE_MUTE, SIZE_PETITE, 100, 50, 50, 80, 100, 100, 90, 40, 100, 0, 0, 0, 0, 0, "bite", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MAGIC, LANG_ANIMAL ,RACEWAR_NONE, }, { "Herbivore", "Herbivore", "AH", RACE_MUTE, SIZE_PETITE, 80, 50, 50, 80, 100, 110, 90, 40, 100, 0, 0, 0, 0, 0, "bite", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MAGIC, LANG_ANIMAL ,RACEWAR_NONE, }, { "Carnivore", "Carnivore", "AC", RACE_MUTE, SIZE_PETITE, 110, 50, 50, 90, 105, 105, 70, 30, 100, 0, 0, 0, 0, 0, "bite", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MAGIC, LANG_ANIMAL ,RACEWAR_NONE, }, { "Bird", "Bird", "B", RACE_FLY | RACE_DETECT_HIDDEN | RACE_MUTE, SIZE_PETITE, 100, 50, 50, 80, 100, 100, 90, 40, 100, 0, 0, 0, 0, 0, "bite", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MAGIC, LANG_ANIMAL ,RACEWAR_NONE, }, { "Horse", "&+yHorse&n", "AE", RACE_DETECT_HIDDEN | RACE_MUTE, SIZE_PETITE, 110, 50, 50, 80, 105, 100, 90, 40, 100, 0, 0, 0, 0, 0, "bite", "trots", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MAGIC, LANG_ANIMAL ,RACEWAR_NONE, }, { "Primate", "Primate", "AA", RACE_DETECT_HIDDEN | RACE_MUTE, SIZE_PETITE, 100, 70, 70, 90, 100, 100, 90, 50, 100, 0, 0, 0, 0, 0, "bite", "walks", "Kobold Halfkobold", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_GUTS | PART_FEET | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_MAGIC, LANG_ANIMAL ,RACEWAR_NONE, }, { "Undead", "Undead", "U", RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_MEDIUM, 110, 10, 10, 50, 100, 50, 10, 120, 10, 0, 0, 0, -1, -1, "touch", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_WEAPON, RIS_DISEASE | RIS_POISON, RIS_LIGHT | RIS_WHITE_MANA, LANG_SPIRITUAL ,RACEWAR_NONE, }, { "Ghost", "&+WGhost&n", "UG", RACE_PASSDOOR | RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_MEDIUM, 110, 100, 100, 100, 100, 100, 10, 130, 70, 0, 0, 0, -1, -1, "touch", "floats", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_WEAPON, RIS_DISEASE | RIS_POISON, RIS_LIGHT | RIS_WHITE_MANA, LANG_SPIRITUAL ,RACEWAR_NONE, }, { "Harpy", "Harpy", "HP", RACE_FLY | RACE_DETECT_INVIS | RACE_MUTE, SIZE_MEDIUM, 100, 100, 100, 100, 100, 100, 100, 100, 100, 0, 0, 6, 0, 0, "claw", "walks", "Human Elf Halfelf Dwarf Halfdwarf Hobbit Gnome", PART_HEAD | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_WINGS | PART_TAIL | PART_CLAWS | PART_FANGS | PART_SCALES, RIS_SOUND, RIS_NONE, RIS_NONE, LANG_SPIRITUAL ,RACEWAR_NONE, }, { "Bear", "&+yBear&n", "AB", RACE_SWIM | RACE_DETECT_HIDDEN | RACE_MUTE, SIZE_LARGE, 120, 40, 45, 90, 110, 100, 100, 90, 100, 0, 0, 0, 0, 3, "swipe", "walks", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_EAR | PART_EYE | PART_CLAWS | PART_FANGS, RIS_BASH | RIS_COLD, RIS_NONE, RIS_NONE, LANG_MAMMAL ,RACEWAR_NONE, }, { "Fire Elemental", "&+rFire Elemental&n", "EF", RACE_MUTE, SIZE_LARGE, 110, 10, 10, 100, 110, 100, 10, 10, 10, 0, 0, 0, -1, -1, "punch", "blazes", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_MAGICAL ,RACEWAR_NONE, }, { "Air Elemental", "&+CAir Elemental&n", "EA", RACE_MUTE, SIZE_LARGE, 110, 10, 10, 100, 110, 100, 10, 10, 10, 0, 0, 0, -1, -1, "punch", "blows", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_MAGICAL ,RACEWAR_NONE, }, { "Water Elemental", "&+bWater Elemental&n", "EW", RACE_MUTE, SIZE_LARGE, 110, 10, 10, 100, 110, 100, 10, 10, 10, 0, 0, 0, -1, -1, "punch", "flows", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_MAGICAL ,RACEWAR_NONE, }, { "Earth Elemental", "&+yEarth Elemental&n", "EE", RACE_MUTE, SIZE_LARGE, 110, 10, 10, 100, 110, 100, 10, 10, 10, 0, 0, 0, -1, -1, "punch", "lumbers", "", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE, RIS_NONE, RIS_NONE, RIS_NONE, LANG_MAGICAL ,RACEWAR_NONE, }, { "Bat", "&+LBat&n", "BB", RACE_FLY | RACE_INFRAVISION | RACE_MUTE, SIZE_MINUTE, 40, 20, 20, 40, 90, 110, 20, 20, 100, 0, 0, 4, 0, 0, "bite", "flies", "", PART_HEAD | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_FEET | PART_EAR | PART_EYE | PART_WINGS | PART_CLAWS | PART_FANGS, RIS_NONE, RIS_NONE, RIS_NONE, LANG_RODENT ,RACEWAR_NONE, }, { "Plant", "&+gPlant&n", "VP", RACE_MUTE, SIZE_MINUTE, 100, 10, 10, 50, 110, 60, 100, 70, 100, 0, 0, 0, -1, 0, "swipe", "walks", "", PART_HEAD | PART_FANGS, RIS_DROWNING, RIS_NONE, RIS_FIRE | RIS_COLD, LANG_PLANT ,RACEWAR_NONE, }, { "Tree", "&+gTree&n", "VT", RACE_MUTE, SIZE_MINUTE, 120, 10, 10, 50, 110, 60, 100, 70, 100, 0, 0, 0, -1, 0, "swipe", "walks", "", PART_HEAD | PART_FANGS, RIS_DROWNING, RIS_NONE, RIS_FIRE | RIS_COLD, LANG_PLANT ,RACEWAR_NONE, }, { "Rat", "&+yRat&n", "AR", RACE_PASSDOOR | RACE_MUTE, SIZE_MINUTE, 35, 20, 20, 160, 70, 110, 30, 20, 100, 0, 0, 0, 0, 0, "bite", "scurries", "", PART_HEAD | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_FEET | PART_EAR | PART_EYE | PART_FANGS, RIS_NONE, RIS_NONE, RIS_NONE, LANG_RODENT ,RACEWAR_NONE, }, { "Parasite", "Parasite", "AP", RACE_MUTE, SIZE_MINUTE, 35, 20, 20, 40, 70, 40, 30, 20, 40, 0, 0, 0, 0, 0, "bite", "walks", "", PART_HEAD | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_FEET | PART_EAR | PART_EYE | PART_FANGS, RIS_NONE, RIS_NONE, RIS_NONE, LANG_RODENT ,RACEWAR_NONE, }, { "Lycanthrope", "&+yLycanthrope&n", "L", RACE_INFRAVISION | RACE_DETECT_ALIGN | RACE_DETECT_INVIS | RACE_DETECT_HIDDEN | RACE_WEAPON_WIELD, SIZE_MEDIUM, 130, 90, 90, 110, 140, 110, 70, 100, 100, 10, 0, 5, 0, 5, "claw", "walks", "Human Elf Halfelf Drow Dwarf Halfdwarf Hobbit Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Vampire Goblin Faerie Gnome", PART_HEAD | PART_ARMS | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_HANDS | PART_FEET | PART_FINGERS | PART_EAR | PART_EYE | PART_TAIL | PART_CLAWS | PART_FANGS, RIS_BASH, RIS_NONE, RIS_SILVER, LANG_SPIRITUAL ,RACEWAR_NONE, }, { "Arachnid", "Arachnid", "AS", RACE_NO_ABILITIES | RACE_WEAPON_WIELD | RACE_MUTE, SIZE_SMALL, 70, 10, 10, 80, 100, 100, 10, 10, 100, 0, 0, 0, 0, 0, "bite", "crawls", "", PART_HEAD | PART_LEGS | PART_HEART | PART_FEET | PART_EYE | PART_FANGS, RIS_POISON, RIS_NONE, RIS_NONE, LANG_INSECTOID ,RACEWAR_NONE, }, { "Object", "Object", "O", RACE_WATERBREATH | RACE_MUTE, SIZE_AVERAGE, 100, 10, 10, 10, 100, 10, 10, 10, 10, 0, 0, 0, -1, -1, "swing", "moves", "", PART_NONE, RIS_LIGHT, RIS_POISON | RIS_DISEASE | RIS_DROWNING, RIS_ENERGY, LANG_MAGICAL ,RACEWAR_NONE, }, { "Mist", "Mist", "M", RACE_FLY | RACE_PASSDOOR | RACE_MUTE, SIZE_PETITE, 30, 100, 100, 100, 100, 100, 10, 100, 100, 0, 0, 20, -1, -1, "gas", "floats", "", PART_NONE, RIS_NONE, RIS_DISEASE | RIS_POISON, RIS_MAGIC, LANG_SPIRITUAL ,RACEWAR_NONE, }, { "Snake", "&+gSnake&n", "RS", RACE_MUTE, SIZE_MINUTE, 100, 60, 60, 110, 100, 110, 100, 60, 100, 0, 0, 0, 0, 0, "bite", "slithers", "", PART_HEAD | PART_HEART | PART_BRAINS | PART_GUTS | PART_EYE | PART_TAIL | PART_FANGS | PART_SCALES, RIS_POISON, RIS_NONE, RIS_COLD, LANG_REPTILE ,RACEWAR_NONE, }, { "Worm", "Worm", "AW", RACE_PASSDOOR | RACE_MUTE, SIZE_MINUTE, 40, 10, 10, 30, 100, 30, 10, 10, 100, 0, 0, 0, 0, 0, "slime", "crawls", "", PART_HEAD | PART_TAIL, RIS_NONE, RIS_NONE, RIS_BASH, LANG_INSECTOID ,RACEWAR_NONE, }, { "Fish", "&+bFish&n", "F", RACE_WATERBREATH | RACE_SWIM | RACE_MUTE, SIZE_MINUTE, 70, 40, 40, 120, 100, 120, 100, 40, 100, 0, 0, 0, -1, 0, "slap", "swims", "", PART_HEAD | PART_HEART | PART_BRAINS | PART_GUTS | PART_EYE | PART_TAIL | PART_SCALES | PART_FINS, RIS_NONE, RIS_DROWNING, RIS_NONE, LANG_FISH ,RACEWAR_NONE, }, { "Hydra", "&+gHydra&n", "DH", RACE_DETECT_HIDDEN | RACE_MUTE, SIZE_TITANIC, 180, 90, 90, 90, 170, 90, 50, 100, 100, 0, 0, 0, 0, 0, "bite", "walks", "", PART_HEAD | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_FEET | PART_EYE | PART_TAIL | PART_FANGS | PART_SCALES, RIS_BASH, RIS_NONE, RIS_PIERCE, LANG_DRAGON ,RACEWAR_NONE, }, { "Reptile", "&+gReptile&n", "R", RACE_MUTE, SIZE_PETITE, 70, 70, 70, 100, 100, 100, 70, 70, 100, 0, 0, 0, 0, 0, "lash", "walks", "", PART_HEAD | PART_LEGS | PART_HEART | PART_BRAINS | PART_GUTS | PART_FEET | PART_EYE | PART_TAIL | PART_FANGS, RIS_POISON, RIS_NONE, RIS_COLD, LANG_REPTILE, RACEWAR_NONE } }; const int class_avail [MAX_PC_RACE][MAX_CLASS] = { //No Wa So Ps Cl Th As Me Pa An Ra Ee Ea Ef Ew Sh Dr { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // human { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // barbarian { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // grey elf { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // rakshasa { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // half-elf { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // flind { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // drow { 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // dwarf { 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // duergar { 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // halfling { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // troll { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // ogre { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // orc { 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // gnome { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // centaur { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // githyanki { 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // goblin }; const int repop_point [MAX_PC_RACE][MAX_CLASS] = { //No Wa So Ps Cl Th As Me Pa An Ra Ee Ea Ef Ew Sh Dr { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // human { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // barbarian { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // grey elf { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // rakshasa { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // half-elf { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // flind { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // drow { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // dwarf { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // duergar { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // halfling { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // troll { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // ogre { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // orc { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // gnome { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // centaur { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // githyanki { ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START, ROOM_VNUM_START }, // goblin }; /* * Drunkeness string changes. */ const struct struckdrunk drunk [ ] = { { 3, 10, { "a", "a", "a", "A", "aa", "ah", "Ah", "ao", "aw", "oa", "ahhhh" } }, { 8, 5, { "b", "b", "b", "B", "B", "vb" } }, { 3, 5, { "c", "c", "C", "ch", "sj", "zj" } }, { 5, 2, { "d", "d", "D" } }, { 3, 3, { "e", "e", "eh", "E" } }, { 4, 5, { "f", "f", "ff", "fff", "fFf", "F" } }, { 8, 3, { "g", "g", "G", "jeh" } }, { 9, 6, { "h", "h", "hh", "hhh", "Hhh", "HhH", "H" } }, { 7, 6, { "i", "i", "Iii", "ii", "iI", "Ii", "I" } }, { 9, 5, { "j", "j", "jj", "Jj", "jJ", "J" } }, { 7, 3, { "k", "k", "K", "kah" } }, { 3, 2, { "l", "l", "L" } }, { 5, 8, { "m", "m", "mm", "mmm", "mmmm", "mmmmm", "MmM", "mM", "M" } }, { 6, 6, { "n", "n", "nn", "Nn", "nnn", "nNn", "N" } }, { 3, 6, { "o", "o", "ooo", "ao", "aOoo", "Ooo", "ooOo" } }, { 3, 2, { "p", "p", "P" } }, { 5, 5, { "q", "q", "Q", "ku", "ququ", "kukeleku" } }, { 4, 2, { "r", "r", "R" } }, { 2, 5, { "s", "ss", "zzZzssZ", "ZSssS", "sSzzsss", "sSss" } }, { 5, 2, { "t", "t", "T" } }, { 3, 6, { "u", "u", "uh", "Uh", "Uhuhhuh", "uhU", "uhhu" } }, { 4, 2, { "v", "v", "V" } }, { 4, 2, { "w", "w", "W" } }, { 5, 6, { "x", "x", "X", "ks", "iks", "kz", "xz" } }, { 3, 2, { "y", "y", "Y" } }, { 2, 8, { "z", "z", "ZzzZz", "Zzz", "Zsszzsz", "szz", "sZZz", "ZSz", "zZ"} } }; /* * Attack damage type and string. */ const struct attack_type attack_table [MAX_ATTACK] = { { "hit", &gsn_hit, DAM_BASH, NULL }, /* 0 */ { "slice", &gsn_slash, DAM_SLASH, NULL }, /* 1 */ { "stab", &gsn_pierce, DAM_PIERCE, NULL }, { "slash", &gsn_slash, DAM_SLASH, NULL }, { "whip", &gsn_whip, DAM_SLASH, NULL }, { "claw", &gsn_slash, DAM_SLASH, NULL }, /* 5 */ { "blast", &gsn_explode, DAM_BASH, NULL }, { "pound", &gsn_pound, DAM_BASH, NULL }, { "crush", &gsn_pound, DAM_BASH, NULL }, { "grep", &gsn_pierce, DAM_PIERCE, NULL }, { "bite", &gsn_pierce, DAM_PIERCE, NULL }, /* 10 */ { "pierce", &gsn_pierce, DAM_PIERCE, NULL }, { "suction", &gsn_suction, DAM_BASH, hit_suck_disarm }, { "chop", &gsn_slash, DAM_SLASH, NULL }, { "vorpal", &gsn_slash, DAM_SLASH, hit_vorpal }, { "cleave", &gsn_slash, DAM_SLASH, NULL }, /* 15 */ { "wail", &gsn_hit, DAM_BASH, NULL } }; /* * Attribute bonus tables. */ const struct str_app_type str_app [251] = { { -5, -4, 0, 1 }, /* 0 */ { -5, -4, 3, 1 }, /* 1 */ { -3, -2, 3, 1 }, { -3, -1, 10, 1 }, /* 3 */ { -2, -1, 25, 2 }, { -2, -1, 55, 2 }, /* 5 */ { -1, 0, 80, 2 }, { -1, 0, 90, 2 }, { 0, 0, 100, 3 }, { 0, 0, 100, 3 }, { 0, 0, 115, 3 }, /* 10 */ { 0, 0, 115, 3 }, { 0, 0, 140, 4 }, /* 12 */ { 0, 0, 140, 4 }, { 0, 0, 140, 4 }, { 0, 0, 140, 4 }, { 0, 0, 140, 5 }, { 0, 0, 140, 5 }, { 0, 0, 140, 5 }, { 0, 0, 140, 5 }, { 0, 0, 140, 6 }, /* 20 */ { 0, 0, 140, 6 }, { 0, 0, 140, 6 }, { 0, 0, 140, 6 }, { 0, 0, 140, 7 }, { 0, 0, 140, 7 }, { 0, 0, 140, 7 }, { 0, 0, 140, 7 }, { 0, 0, 140, 8 }, { 0, 0, 140, 8 }, { 0, 0, 140, 8 }, /* 30 */ { 0, 0, 140, 8 }, { 0, 0, 140, 8 }, { 0, 0, 140, 9 }, { 0, 0, 140, 9 }, { 0, 0, 140, 9 }, { 0, 0, 140, 9 }, { 0, 0, 140, 10 }, { 0, 0, 140, 10 }, { 0, 0, 140, 10 }, { 0, 0, 140, 10 }, /* 40 */ { 0, 0, 140, 11 }, { 0, 0, 140, 11 }, { 0, 0, 140, 11 }, { 0, 0, 140, 11 }, { 0, 0, 140, 12 }, { 0, 0, 140, 12 }, { 0, 0, 140, 12 }, { 0, 0, 140, 12 }, { 0, 0, 140, 13 }, { 0, 0, 140, 13 }, /* 50 */ { 0, 0, 140, 13 }, { 0, 0, 140, 13 }, { 0, 0, 140, 14 }, { 0, 0, 140, 14 }, { 0, 0, 140, 14 }, { 0, 0, 140, 14 }, { 0, 0, 140, 15 }, { 0, 0, 140, 15 }, { 0, 0, 140, 15 }, { 0, 0, 140, 15 }, /* 60 */ { 0, 0, 140, 16 }, { 0, 0, 140, 16 }, { 0, 0, 140, 16 }, { 0, 0, 140, 16 }, { 0, 0, 140, 17 }, { 0, 0, 140, 17 }, { 0, 0, 140, 17 }, { 0, 0, 140, 17 }, { 0, 0, 140, 18 }, { 0, 0, 140, 18 }, /* 70 */ { 0, 0, 140, 18 }, { 0, 0, 140, 18 }, { 0, 0, 140, 19 }, { 0, 0, 140, 19 }, { 0, 0, 140, 19 }, { 0, 0, 140, 19 }, { 0, 0, 140, 20 }, { 0, 0, 140, 20 }, { 0, 0, 140, 20 }, { 0, 1, 140, 20 }, /* 80 */ { 0, 1, 140, 21 }, { 0, 1, 140, 21 }, { 0, 1, 140, 21 }, { 0, 1, 140, 21 }, { 0, 1, 140, 22 }, { 0, 1, 140, 22 }, { 1, 1, 140, 22 }, { 1, 1, 140, 22 }, { 1, 1, 140, 23 }, { 1, 1, 140, 23 }, /* 90 */ { 1, 1, 140, 23 }, { 1, 1, 140, 23 }, { 1, 2, 140, 24 }, { 1, 2, 140, 24 }, { 1, 2, 140, 24 }, { 1, 2, 140, 24 }, { 2, 2, 140, 25 }, { 2, 2, 140, 25 }, { 2, 2, 140, 25 }, { 2, 3, 140, 25 }, /* 100 */ { 2, 3, 140, 26 }, { 2, 3, 140, 26 }, { 2, 3, 140, 26 }, { 2, 3, 140, 26 }, { 2, 3, 140, 27 }, { 2, 3, 140, 27 }, { 2, 3, 140, 27 }, { 2, 3, 140, 27 }, { 2, 3, 140, 28 }, { 2, 4, 140, 28 }, /* 110 */ { 2, 4, 140, 28 }, { 2, 4, 140, 28 }, { 2, 4, 140, 29 }, { 2, 4, 140, 29 }, { 2, 4, 140, 29 }, { 2, 4, 140, 29 }, { 2, 4, 140, 30 }, { 2, 4, 140, 30 }, { 2, 4, 140, 30 }, { 3, 4, 140, 30 }, /* 120 */ { 3, 4, 140, 31 }, { 3, 4, 140, 31 }, { 3, 4, 140, 31 }, { 3, 4, 140, 31 }, { 3, 4, 140, 32 }, { 3, 4, 140, 32 }, { 3, 4, 140, 32 }, { 3, 4, 140, 32 }, { 3, 4, 140, 33 }, { 3, 5, 140, 33 }, /* 130 */ { 3, 5, 140, 33 }, { 3, 5, 140, 33 }, { 3, 5, 140, 34 }, { 3, 5, 140, 34 }, { 3, 5, 140, 34 }, { 3, 5, 140, 34 }, { 3, 5, 140, 35 }, { 3, 5, 140, 35 }, { 3, 5, 140, 35 }, { 3, 6, 140, 35 }, /* 140 */ { 3, 6, 140, 36 }, { 3, 6, 140, 36 }, { 3, 6, 140, 36 }, { 3, 6, 140, 36 }, { 3, 6, 140, 37 }, { 3, 6, 140, 37 }, { 3, 6, 140, 37 }, { 3, 6, 140, 37 }, { 3, 6, 140, 38 }, { 3, 7, 140, 38 }, /* 150 */ { 3, 7, 140, 38 }, { 3, 7, 140, 38 }, { 3, 7, 140, 39 }, { 3, 7, 140, 39 }, { 3, 7, 140, 39 }, { 3, 7, 140, 39 }, { 3, 7, 140, 40 }, { 3, 7, 140, 40 }, { 3, 7, 140, 40 }, { 4, 7, 140, 40 }, /* 160 */ { 4, 7, 140, 41 }, { 4, 7, 140, 41 }, { 4, 7, 140, 41 }, { 4, 7, 140, 41 }, { 4, 7, 140, 42 }, { 4, 7, 140, 42 }, { 4, 7, 140, 42 }, { 4, 7, 140, 42 }, { 4, 7, 140, 43 }, { 4, 8, 140, 43 }, /* 170 */ { 4, 8, 140, 43 }, { 4, 8, 140, 43 }, { 4, 8, 140, 44 }, { 4, 8, 140, 44 }, { 4, 8, 140, 44 }, { 4, 8, 140, 44 }, { 4, 8, 140, 45 }, { 4, 8, 140, 45 }, { 4, 8, 140, 45 }, { 4, 9, 140, 45 }, /* 180 */ { 4, 9, 140, 46 }, { 4, 9, 140, 46 }, { 4, 9, 140, 46 }, { 4, 9, 140, 46 }, { 4, 9, 140, 47 }, { 4, 9, 140, 47 }, { 4, 9, 140, 47 }, { 4, 9, 140, 47 }, { 4, 9, 140, 48 }, { 5, 9, 140, 48 }, /* 190 */ { 5, 9, 140, 48 }, { 5, 9, 140, 48 }, { 5, 9, 140, 49 }, { 5, 9, 140, 49 }, { 5, 9, 140, 49 }, { 5, 9, 140, 49 }, { 5, 9, 140, 50 }, { 5, 9, 140, 50 }, { 5, 9, 140, 50 }, { 5, 10, 140, 50 }, /* 200 */ { 5, 10, 140, 51 }, { 5, 10, 140, 51 }, { 5, 10, 140, 51 }, { 5, 10, 140, 51 }, { 5, 10, 140, 112 }, { 5, 10, 140, 112 }, { 5, 10, 140, 112 }, { 5, 10, 140, 112 }, { 5, 10, 140, 112 }, { 5, 11, 140, 112 }, /* 210 */ { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, { 5, 11, 140, 112 }, /* 220 */ { 5, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, { 6, 11, 140, 112 }, /* 230 */ { 6, 12, 140, 112 }, { 6, 12, 140, 112 }, { 6, 12, 140, 112 }, { 6, 12, 140, 112 }, { 7, 12, 140, 112 }, { 7, 12, 140, 112 }, { 7, 12, 140, 112 }, { 7, 12, 140, 112 }, { 7, 12, 140, 113 }, { 7, 13, 170, 114 }, /* 240 */ { 7, 13, 170, 115 }, { 7, 13, 195, 116 }, { 7, 13, 220, 122 }, { 7, 13, 250, 125 }, { 8, 13, 400, 130 }, { 8, 13, 500, 135 }, { 8, 13, 600, 140 }, { 8, 14, 700, 145 }, { 8, 15, 800, 150 }, { 9, 16, 800, 150 }, /* 250 */ }; const struct int_app_type int_app [251] = { { 3 }, /* 0 */ { 5 }, /* 1 */ { 7 }, { 8 }, /* 3 */ { 9 }, { 10 }, /* 5 */ { 11 }, { 12 }, { 13 }, { 15 }, { 17 }, /* 10 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 15 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 20 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 25 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 30 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 35 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 40 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 45 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 50 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 55 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 60 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 65 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 70 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 75 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 80 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 85 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 90 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 95 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 100 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 105 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 110 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 115 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 120 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 125 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 130 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 135 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 140 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 145 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 150 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 155 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 160 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 165 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 170 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 175 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 180 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 185 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 190 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 195 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 200 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 205 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 210 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 215 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 220 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 225 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 230 */ { 17 }, { 17 }, { 17 }, { 17 }, { 17 }, /* 235 */ { 19 }, /* 236 */ { 22 }, { 25 }, { 28 }, { 31 }, /* 240 */ { 34 }, { 37 }, { 40 }, /* 243 */ { 44 }, { 49 }, /* 245 */ { 55 }, { 60 }, { 70 }, { 85 }, { 99 } /* 250 */ }; const struct wis_app_type wis_app [251] = { { 0 }, /* 0 */ { 0 }, /* 1 */ { 0 }, { 0 }, /* 3 */ { 0 }, { 1 }, /* 5 */ { 1 }, { 1 }, { 1 }, { 2 }, { 2 }, /* 10 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 15 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 20 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 25 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 30 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 35 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 40 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 45 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 50 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 55 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 60 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 65 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 70 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 75 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 80 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 85 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 90 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 95 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 100 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 105 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 110 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 115 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 120 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 125 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 130 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 135 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 140 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 145 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 150 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 155 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 160 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 165 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 170 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 175 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 180 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 185 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 190 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 195 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 200 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 205 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 210 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 215 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 220 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 225 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 230 */ { 2 }, { 2 }, { 2 }, { 2 }, { 2 }, /* 235 */ { 2 }, { 2 }, { 2 }, { 2 }, { 3 }, /* 240 */ { 3 }, { 4 }, { 4 }, /* 243 */ { 5 }, { 5 }, /* 245 */ { 6 }, { 7 }, { 7 }, { 7 }, { 8 } /* 250 */ }; const struct agi_app_type agi_app [251] = { { 60 }, /* 0 */ { 57 }, /* 1 */ { 54 }, { 52 }, { 50 }, { 48 }, /* 5 */ { 46 }, { 44 }, { 42 }, { 40 }, { 38 }, /* 10 */ { 37 }, { 36 }, { 35 }, { 34 }, { 33 }, /* 15 */ { 32 }, { 31 }, { 30 }, { 29 }, { 28 }, /* 20 */ { 27 }, { 26 }, { 25 }, { 24 }, { 23 }, /* 25 */ { 22 }, { 21 }, { 20 }, { 19 }, { 18 }, /* 30 */ { 17 }, { 16 }, { 15 }, { 14 }, { 13 }, /* 35 */ { 12 }, { 11 }, { 10 }, { 9 }, { 8 }, /* 40 */ { 7 }, { 6 }, { 5 }, { 4 }, { 3 }, /* 45 */ { 2 }, { 2 }, { 1 }, { 1 }, { 0 }, /* 50 */ { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, /* 55 */ { 0 }, { 0 }, { 0 }, { 0 }, { - 1 }, /* 60 */ { - 1 }, { - 1 }, { - 2 }, { - 2 }, { - 3 }, /* 65 */ { - 3 }, { - 4 }, { - 4 }, { - 5 }, { - 5 }, /* 70 */ { - 6 }, { - 6 }, { - 7 }, { - 7 }, { - 8 }, /* 75 */ { - 8 }, { - 9 }, { - 9 }, { - 10 }, { - 11 }, /* 80 */ { - 12 }, { - 13 }, { - 14 }, { - 15 }, { - 16 }, /* 85 */ { - 17 }, { - 18 }, { - 19 }, { - 20 }, { - 21 }, /* 90 */ { - 22 }, { - 23 }, { - 24 }, { - 25 }, { - 26 }, /* 95 */ { - 27 }, { - 28 }, { - 29 }, { - 30 }, { - 31 }, /* 100 */ { - 32 }, { - 32 }, { - 33 }, { - 33 }, { - 34 }, /* 105 */ { - 34 }, { - 35 }, { - 35 }, { - 36 }, { - 36 }, /* 110 */ { - 37 }, { - 37 }, { - 38 }, { - 38 }, { - 39 }, /* 115 */ { - 39 }, { - 40 }, { - 40 }, { - 41 }, { - 41 }, /* 120 */ { - 42 }, { - 42 }, { - 43 }, { - 43 }, { - 44 }, /* 125 */ { - 44 }, { - 45 }, { - 45 }, { - 46 }, { - 46 }, /* 130 */ { - 47 }, { - 47 }, { - 48 }, { - 48 }, { - 49 }, /* 135 */ { - 49 }, { - 50 }, { - 50 }, { - 51 }, { - 51 }, /* 140 */ { - 52 }, { - 52 }, { - 53 }, { - 53 }, { - 54 }, /* 145 */ { - 54 }, { - 55 }, { - 55 }, { - 56 }, { - 56 }, /* 150 */ { - 57 }, { - 57 }, { - 58 }, { - 58 }, { - 59 }, /* 155 */ { - 59 }, { - 60 }, { - 60 }, { - 61 }, { - 61 }, /* 160 */ { - 62 }, { - 62 }, { - 63 }, { - 63 }, { - 64 }, /* 165 */ { - 64 }, { - 65 }, { - 65 }, { - 66 }, { - 66 }, /* 170 */ { - 67 }, { - 67 }, { - 68 }, { - 68 }, { - 69 }, /* 175 */ { - 69 }, { - 70 }, { - 70 }, { - 71 }, { - 71 }, /* 180 */ { - 72 }, { - 72 }, { - 73 }, { - 73 }, { - 74 }, /* 185 */ { - 74 }, { - 75 }, { - 75 }, { - 76 }, { - 76 }, /* 190 */ { - 77 }, { - 77 }, { - 78 }, { - 78 }, { - 79 }, /* 200 */ { - 79 }, { - 80 }, { - 81 }, { - 82 }, { - 83 }, /* 205 */ { - 84 }, { - 85 }, { - 86 }, { - 87 }, { - 88 }, /* 210 */ { - 89 }, { - 90 }, { - 91 }, { - 92 }, { - 93 }, /* 215 */ { - 94 }, { - 95 }, { - 96 }, { - 97 }, { - 98 }, /* 220 */ { - 99 }, { - 100 }, { - 101 }, { - 102 }, { - 103 }, /* 225 */ { - 104 }, { - 105 }, { - 106 }, { - 107 }, { - 108 }, /* 230 */ { - 109 }, { - 110 }, { - 111 }, { - 112 }, { - 113 }, /* 235 */ { - 114 }, { - 115 }, { - 116 }, { - 117 }, { - 118 }, /* 240 */ { - 119 }, { - 120 }, { - 121 }, { - 122 }, { - 123 }, /* 245 */ { - 124 }, { - 125 }, { - 126 }, { - 128 }, { - 130 } /* 250 */ }; const struct con_app_type con_app [251] = { { 35, 20 }, /* 0 */ { 40, 25 }, /* 1 */ { 42, 30 }, { 44, 35 }, /* 3 */ { 46, 40 }, { 48, 45 }, /* 5 */ { 50, 50 }, { 52, 55 }, { 54, 60 }, { 56, 65 }, { 58, 70 }, /* 10 */ { 60, 70 }, { 62, 70 }, { 64, 70 }, { 66, 70 }, { 68, 70 }, /* 15 */ { 70, 70 }, { 71, 70 }, { 72, 70 }, { 73, 70 }, { 74, 70 }, /* 20 */ { 75, 70 }, { 76, 70 }, { 77, 70 }, { 78, 70 }, { 79, 70 }, /* 25 */ { 80, 70 }, { 81, 70 }, { 82, 70 }, { 83, 70 }, { 84, 70 }, /* 30 */ { 85, 70 }, { 86, 70 }, { 87, 70 }, { 88, 70 }, { 89, 70 }, /* 35 */ { 90, 70 }, { 91, 70 }, { 92, 70 }, { 93, 70 }, { 94, 70 }, /* 40 */ { 95, 70 }, { 96, 70 }, { 96, 70 }, { 97, 70 }, { 97, 70 }, /* 45 */ { 98, 70 }, { 98, 70 }, { 99, 70 }, { 99, 70 }, { 100, 70 }, /* 50 */ { 100, 70 }, { 100, 70 }, { 100, 70 }, { 100, 70 }, { 100, 70 }, /* 55 */ { 100, 70 }, { 100, 70 }, { 100, 70 }, { 100, 70 }, { 101, 70 }, /* 60 */ { 101, 70 }, { 101, 70 }, { 102, 70 }, { 102, 70 }, { 102, 70 }, /* 65 */ { 103, 70 }, { 103, 70 }, { 103, 70 }, { 104, 70 }, { 104, 70 }, /* 70 */ { 104, 70 }, { 105, 70 }, { 105, 70 }, { 105, 70 }, { 106, 70 }, /* 75 */ { 106, 70 }, { 106, 70 }, { 107, 70 }, { 107, 70 }, { 107, 70 }, /* 80 */ { 108, 70 }, { 108, 70 }, { 109, 70 }, { 109, 70 }, { 110, 70 }, /* 85 */ { 110, 70 }, { 111, 70 }, { 111, 70 }, { 112, 70 }, { 112, 70 }, /* 90 */ { 113, 70 }, { 113, 70 }, { 114, 70 }, { 114, 70 }, { 115, 70 }, /* 95 */ { 115, 70 }, { 116, 70 }, { 116, 70 }, { 117, 70 }, { 117, 70 }, /* 100 */ { 118, 70 }, { 118, 70 }, { 119, 70 }, { 119, 70 }, { 120, 70 }, /* 105 */ { 120, 70 }, { 121, 70 }, { 121, 70 }, { 122, 70 }, { 122, 70 }, /* 110 */ { 123, 70 }, { 123, 70 }, { 124, 70 }, { 124, 70 }, { 125, 70 }, /* 115 */ { 125, 70 }, { 126, 70 }, { 126, 70 }, { 127, 70 }, { 127, 70 }, /* 120 */ { 128, 70 }, { 128, 70 }, { 128, 70 }, { 129, 70 }, { 129, 70 }, /* 125 */ { 129, 70 }, { 130, 70 }, { 130, 70 }, { 130, 70 }, { 131, 70 }, /* 130 */ { 131, 70 }, { 131, 70 }, { 132, 70 }, { 132, 70 }, { 132, 70 }, /* 135 */ { 133, 70 }, { 133, 70 }, { 133, 70 }, { 134, 70 }, { 134, 70 }, /* 140 */ { 134, 70 }, { 135, 70 }, { 135, 70 }, { 135, 70 }, { 136, 70 }, /* 145 */ { 136, 70 }, { 136, 70 }, { 137, 70 }, { 137, 70 }, { 137, 70 }, /* 150 */ { 138, 70 }, { 138, 70 }, { 138, 70 }, { 139, 70 }, { 139, 70 }, /* 155 */ { 139, 70 }, { 140, 70 }, { 140, 70 }, { 140, 70 }, { 141, 70 }, /* 160 */ { 141, 70 }, { 141, 70 }, { 142, 70 }, { 142, 70 }, { 142, 70 }, /* 165 */ { 143, 70 }, { 143, 70 }, { 143, 70 }, { 144, 70 }, { 144, 70 }, /* 170 */ { 144, 70 }, { 145, 70 }, { 145, 70 }, { 145, 70 }, { 146, 70 }, /* 175 */ { 146, 70 }, { 146, 70 }, { 147, 70 }, { 147, 70 }, { 147, 70 }, /* 180 */ { 148, 70 }, { 148, 70 }, { 148, 70 }, { 149, 70 }, { 149, 70 }, /* 185 */ { 149, 70 }, { 150, 70 }, { 150, 70 }, { 150, 70 }, { 151, 70 }, /* 190 */ { 151, 70 }, { 151, 70 }, { 152, 70 }, { 152, 70 }, { 152, 70 }, /* 195 */ { 153, 70 }, { 153, 70 }, { 153, 70 }, { 154, 70 }, { 154, 70 }, /* 200 */ { 154, 70 }, { 155, 70 }, { 155, 70 }, { 155, 70 }, { 156, 70 }, /* 205 */ { 156, 70 }, { 156, 70 }, { 157, 70 }, { 157, 70 }, { 157, 70 }, /* 210 */ { 158, 70 }, { 158, 70 }, { 158, 70 }, { 159, 70 }, { 159, 70 }, /* 215 */ { 160, 70 }, { 160, 70 }, { 160, 70 }, { 161, 70 }, { 161, 70 }, /* 220 */ { 161, 70 }, { 162, 70 }, { 162, 70 }, { 162, 70 }, { 163, 70 }, /* 225 */ { 163, 70 }, /* 226 */ { 163, 70 }, { 164, 70 }, { 164, 70 }, { 164, 70 }, { 165, 70 }, /* 231 */ { 165, 70 }, { 165, 70 }, { 166, 70 }, { 166, 70 }, { 166, 75 }, { 167, 80 }, { 167, 85 }, { 167, 88 }, { 168, 90 }, /* 240 */ { 169, 95 }, { 170, 97 }, { 171, 99 }, /* 243 */ { 172, 99 }, { 173, 99 }, /* 245 */ { 174, 99 }, { 175, 99 }, { 166, 99 }, { 167, 99 }, { 168, 99 } /* 250 */ }; /* * Liquid properties. * Used in world.obj. */ const struct liq_type liq_table [LIQ_MAX] = { /* name colour drunk, food, thirst */ { "water", "clear", { 0, 0, 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 */ { "white wine", "golden", { 5, 2, 5 } }, { "root beer", "brown", { 0, 3, 6 } }, { "champagne", "golden", { 5, 2, 5 } }, { "vodka", "clear", { 7, 1, 4 } }, { "absinth", "green", { 10, 0, 0 } }, /* 20 */ { "brandy", "golden", { 5, 1, 4 } }, { "schnapps", "clear", { 6, 1, 4 } }, { "orange juice", "orange", { 0, 2, 8 } }, { "sherry", "red", { 3, 2, 4 } }, { "rum", "amber", { 8, 1, 4 } }, /* 25 */ { "port", "red", { 3, 3, 4 } } }; struct skill_type skills_table [MAX_SKILL] = { { "reserved", { L_APP }, NULL, 0, "", "", }, /* * Fighter and thief skills, as well as magic item skills. */ { "backstab", { L_APP }, &gsn_backstab, 24, "vicious backstab", "!Backstab!", }, { "doorbash", { L_APP }, &gsn_doorbash, 24, "powerful bash", "!DoorBash!", }, { "berserk", { L_APP }, &gsn_berserk, 12, "", "The bloody haze lifts.", }, { "circle", { L_APP }, &gsn_circle, 24, "sneak attack", "!Circle!", }, { "disarm", { L_APP }, &gsn_disarm, 36, "", "!Disarm!", }, { "dodge", { L_APP }, &gsn_dodge, 0, "", "!Dodge!", }, { "dual wield", { L_APP }, &gsn_dual, 0, "", "!Dual!", }, { "offense", { L_APP }, &gsn_enhanced_damage, 0, "", "!Enhanced Damage!", }, { "hide", { L_APP }, &gsn_hide, 12, "", "!Hide!", }, { "kick", { L_APP }, &gsn_kick, 24, "mighty kick", "!Kick!", }, { "bash", { L_APP }, &gsn_bash, 25, "mighty bash", "!Bash!", }, { "springleap", { L_APP }, &gsn_springleap, 26, "springleap", "!Springleap!", }, { "charge", { L_APP }, &gsn_charge, 20, "wild charge", "!Charge!", }, { "bodyslam", { L_APP }, &gsn_bodyslam, 32, "mighty slam", "!Bodyslam!", }, { "headbutt", { L_APP }, &gsn_headbutt, 23, "headbutt", "!Headbutt!", }, { "parry", { L_APP }, &gsn_parry, 0, "", "!Parry!", }, { "peek", { L_APP }, &gsn_peek, 0, "", "!Peek!", }, { "pick lock", { L_APP }, &gsn_pick_lock, 12, "", "!Pick!", }, { "poison weapon", { L_APP }, &gsn_poison_weapon, 12, "poisonous concoction", "!Poison Weapon!", }, { "rescue", { L_APP }, &gsn_rescue, 12, "", "!Rescue!", }, { "scrolls", { L_APP }, &gsn_scrolls, 0, "blazing scroll", "!Scrolls!", }, { "second attack", { L_APP }, &gsn_second_attack, 0, "", "!Second Attack!", }, { "snare", { L_APP }, &gsn_snare, 12, "", "You are no longer ensnared.", }, { "sneak", { L_APP }, &gsn_sneak, 12, "", NULL, }, { "staves", { L_APP }, &gsn_staves, 0, "shattered staff", "!Staves!", }, { "steal", { L_APP }, &gsn_steal, 24, "", "!Steal!", }, { "third attack", { L_APP }, &gsn_third_attack, 0, "", "!Third Attack!", }, { "untangle", { L_APP }, &gsn_untangle, 24, "", "!Untangle!", }, { "wands", { L_APP }, &gsn_wands, 0, "exploding wand", "!Wands!", }, /* * Psionicist spell/skill definitions * Psi class conceived, created, and coded by Thelonius (EnvyMud) */ { "chameleon power", { L_APP }, &gsn_chameleon, 12, "", "!Chameleon Power!", }, { "heighten senses", { L_APP }, &gsn_heighten, 0, "", "Your senses return to normal.", }, { "shadow form", { L_APP }, &gsn_shadow, 12, "", "You no longer move in the shadows.", }, /* * New abilities added by Zen, made by several other ppl. */ { "shield block", { L_APP }, &gsn_shield_block, 0, "", "!Shield Block!", }, { "fast healing", { L_APP }, &gsn_fast_healing, 0, "", "!Fast Healing!", }, { "fourth attack", { L_APP }, &gsn_fourth_attack, 0, "", "!Fourth Attack!", }, { "brew", { L_APP }, &gsn_brew, 24, "blunder", "!Brew!", }, { "scribe", { L_APP }, &gsn_scribe, 24, "blunder", "!Scribe!", }, { "track", { L_APP }, &gsn_track, 2, "", "!Track!", }, { "whirlwind", { L_APP }, &gsn_whirlwind, 21, "WhirlWind", "!Whirlwind!", }, { "mount", { L_APP }, &gsn_mount, 5, "", "!Mount!", }, /* * Spells & skills here by Zen. */ { "dirt kicking", { L_APP }, &gsn_dirt, 24, "kicked dirt", "You rub the dirt out of your eyes.", }, { "swim", { L_APP }, &gsn_swim, 0, "", "!Swim!", }, { "meditate", { L_APP }, &gsn_meditate, 0, "", "!Meditate!", }, /* * Weapon proficiencies. * These must all be together and after "pugilism". */ { "barehanded fighting", { L_APP }, &gsn_hit, 0, "", "!Barehanded Fighting!", }, { "1h slashing", { L_APP }, &gsn_slash, 0, "", "!1h slashing!", }, { "1h piercing", { L_APP }, &gsn_pierce, 0, "", "!1h piercing!", }, { "1h misc", { L_APP }, &gsn_whip, 0, "", "!1h misc!", }, { "2h slashing", { L_APP }, &gsn_slash, 0, "", "!2h slashing!", }, { "2h piercing", { L_APP }, &gsn_pierce, 0, "", "!2h piercing!", }, { "2h misc", { L_APP }, &gsn_whip, 0, "", "!2h misc!", }, { "blast weapons", { L_APP }, &gsn_explode, 0, "", "!Blast Weapons!", }, { "1h bludgeoning", { L_APP }, &gsn_pound, 0, "", "!1h bludgeoning!", }, { "2h bludgeoning", { L_APP }, &gsn_pound, 0, "", "!2h bludgeoning!", }, { "tornado suction", { L_APP }, &gsn_suction, 0, "", "!Tornado Suction!", }, { "archery", { L_APP }, &gsn_shot, 0, "", "!Archery!", }, /* Race ability spells */ { "vampiric bite", { L_APP }, &gsn_vampiric_bite, 0, "vampiric bite", "You feel well fed.", }, { "carve", { L_APP }, &gsn_carve, 0, "", "!Carve!", }, { "aerial casting", { L_APP }, NULL, 0, "", "!Aerial Casting!", }, { "aerial combat", { L_APP }, NULL, 0, "", "!Aerial Casting!", }, { "bandage", { L_APP }, &gsn_bandage, 4, "", "!Bandage!", }, { "quick chant", { L_APP }, &gsn_quick_chant, 0, "", "!Quick Chant!", }, { "trip", { L_APP }, &gsn_trip, 24, "trip", "!Trip!", }, { "guard", { L_APP }, &gsn_guard, 0, "", "!Guard!", }, { "blindfighting", { L_APP }, &gsn_blindfighting, 0, "", "!Blindfighting!", }, { "switch opponents", { L_APP }, &gsn_switch, 11, "", "!Switch Opponents!", }, { "awareness", { L_APP }, &gsn_aware, 6, "", "!Awareness!", }, { "unarmed damage", { L_APP }, &gsn_unarmed, 0, "", "!Unarmed Damage!", }, }; const int lesser_memchart [ MAX_LEVEL ] [ 12 ] = // memorization chart for partial spell casters: // rangers, paladins, antipaladins { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 10 { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, // 20 { 0, 0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 3, 2, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 3, 2, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 3, 3, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 3, 3, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 3, 3, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 4, 3, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 4, 3, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 4, 4, 3, 3, 0, 0, 0, 0, 0, 0 }, // 30 { 0, 0, 5, 4, 3, 3, 1, 0, 0, 0, 0, 0 }, { 0, 0, 5, 4, 3, 3, 1, 0, 0, 0, 0, 0 }, { 0, 0, 5, 4, 4, 3, 2, 0, 0, 0, 0, 0 }, { 0, 0, 5, 4, 4, 3, 2, 0, 0, 0, 0, 0 }, { 0, 0, 5, 4, 4, 3, 3, 0, 0, 0, 0, 0 }, { 0, 0, 5, 5, 4, 3, 3, 0, 0, 0, 0, 0 }, { 0, 0, 5, 5, 4, 3, 3, 1, 0, 0, 0, 0 }, { 0, 0, 5, 5, 4, 4, 3, 1, 0, 0, 0, 0 }, { 0, 0, 5, 5, 4, 4, 3, 2, 0, 0, 0, 0 }, { 0, 0, 5, 5, 4, 4, 3, 2, 0, 0, 0, 0 }, // 40 { 0, 0, 5, 5, 5, 4, 3, 3, 1, 0, 0, 0 }, { 0, 0, 5, 5, 5, 4, 3, 3, 1, 0, 0, 0 }, { 0, 0, 5, 5, 5, 4, 4, 3, 2, 0, 0, 0 }, { 0, 0, 5, 5, 5, 4, 4, 3, 2, 0, 0, 0 }, { 0, 0, 5, 5, 5, 4, 4, 3, 3, 0, 0, 0 }, { 0, 0, 5, 5, 5, 5, 4, 3, 3, 0, 0, 0 }, { 0, 0, 5, 5, 5, 5, 4, 3, 3, 1, 0, 0 }, { 0, 0, 5, 5, 5, 5, 4, 3, 3, 1, 0, 0 }, { 0, 0, 5, 5, 5, 5, 4, 4, 3, 2, 0, 0 }, { 0, 0, 5, 5, 5, 5, 4, 4, 3, 2, 1, 0 }, // 50 { 0, 0, 6, 6, 6, 5, 5, 4, 3, 3, 1, 0 }, { 0, 0, 6, 6, 6, 5, 5, 4, 3, 3, 2, 0 }, { 0, 0, 6, 6, 6, 5, 5, 4, 4, 3, 2, 0 }, { 0, 0, 6, 6, 6, 6, 5, 4, 4, 3, 3, 0 }, { 0, 0, 6, 6, 6, 6, 5, 4, 4, 3, 3, 0 }, { 0, 0, 6, 6, 6, 6, 5, 4, 4, 3, 3, 1 }, { 0, 0, 6, 6, 6, 6, 5, 5, 4, 3, 3, 1 }, { 0, 0, 6, 6, 6, 6, 5, 5, 4, 3, 3, 2 }, { 0, 0, 6, 6, 6, 6, 6, 5, 4, 4, 3, 2 }, { 0, 0, 6, 6, 6, 6, 6, 5, 4, 4, 3, 3 }, // 60 { 0, 0, 6, 6, 6, 6, 6, 5, 5, 4, 3, 3 }, { 0, 0, 6, 6, 6, 6, 6, 5, 5, 4, 4, 3 }, { 0, 0, 6, 6, 6, 6, 6, 5, 5, 4, 4, 3 }, { 0, 0, 6, 6, 6, 6, 6, 5, 5, 4, 4, 3 }, // 64 { 0, 0, 6, 6, 6, 6, 6, 5, 5, 4, 4, 3 }, // 65 }; const int memchart [ MAX_LEVEL ] [ 12 ] = // memorization chart for full spellcasting classes: // cleric, shaman, druid, conjurer, necromancer, sorcerer { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 10 { 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 7, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 7, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 7, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 7, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 7, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 7, 6, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, { 8, 7, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, { 8, 7, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0 }, { 8, 7, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0 }, // 20 { 8, 7, 6, 6, 1, 0, 0, 0, 0, 0, 0, 0 }, { 8, 7, 6, 6, 2, 0, 0, 0, 0, 0, 0, 0 }, { 8, 7, 6, 6, 3, 0, 0, 0, 0, 0, 0, 0 }, { 8, 7, 7, 6, 4, 0, 0, 0, 0, 0, 0, 0 }, { 9, 8, 7, 6, 5, 0, 0, 0, 0, 0, 0, 0 }, { 9, 8, 7, 6, 6, 1, 0, 0, 0, 0, 0, 0 }, { 9, 8, 7, 6, 6, 2, 0, 0, 0, 0, 0, 0 }, { 9, 8, 7, 6, 6, 3, 0, 0, 0, 0, 0, 0 }, { 9, 8, 7, 7, 6, 4, 0, 0, 0, 0, 0, 0 }, { 9, 8, 7, 7, 6, 5, 0, 0, 0, 0, 0, 0 }, // 30 { 9, 8, 7, 7, 6, 6, 1, 0, 0, 0, 0, 0 }, {10, 9, 8, 7, 6, 6, 2, 0, 0, 0, 0, 0 }, {10, 9, 8, 7, 6, 6, 3, 0, 0, 0, 0, 0 }, {10, 9, 8, 7, 7, 6, 4, 0, 0, 0, 0, 0 }, {10, 9, 8, 7, 7, 6, 5, 0, 0, 0, 0, 0 }, {10, 9, 8, 7, 7, 6, 6, 1, 0, 0, 0, 0 }, {10, 9, 8, 8, 7, 6, 6, 2, 0, 0, 0, 0 }, {10, 9, 8, 8, 7, 6, 6, 3, 0, 0, 0, 0 }, {11,10, 8, 8, 7, 7, 6, 4, 0, 0, 0, 0 }, {11,10, 9, 8, 7, 7, 6, 5, 0, 0, 0, 0 }, // 40 {11,10, 9, 8, 7, 7, 6, 6, 1, 0, 0, 0 }, {11,10, 9, 8, 8, 7, 6, 6, 2, 0, 0, 0 }, {11,10, 9, 8, 8, 7, 6, 6, 3, 0, 0, 0 }, {11,10, 9, 8, 8, 7, 7, 6, 4, 0, 0, 0 }, {11,10, 9, 9, 8, 7, 7, 6, 5, 0, 0, 0 }, {12,11, 9, 9, 8, 7, 7, 6, 6, 1, 0, 0 }, {12,11, 9, 9, 8, 8, 7, 6, 6, 2, 0, 0 }, {12,11,10, 9, 8, 8, 7, 7, 6, 3, 0, 0 }, {12,11,10, 9, 8, 8, 7, 7, 6, 4, 0, 0 }, {12,11,10, 9, 9, 8, 7, 7, 6, 5, 0, 0 }, // 50 {12,11,10, 9, 9, 8, 7, 7, 6, 6, 1, 0 }, {12,11,10,10, 9, 8, 8, 7, 6, 6, 2, 0 }, {13,12,10,10, 9, 8, 8, 7, 6, 6, 3, 0 }, {13,12,10,10, 9, 8, 8, 7, 7, 6, 4, 0 }, {13,12,11,10, 9, 8, 8, 7, 7, 6, 5, 0 }, {13,12,11,10, 9, 9, 8, 8, 7, 6, 6, 1 }, // 56 -- end of mortal levels {13,12,11,10,10, 9, 8, 8, 7, 6, 6, 2 }, {13,12,11,10,10, 9, 8, 8, 7, 6, 6, 3 }, {13,12,11,11,10, 9, 8, 8, 7, 7, 6, 4 }, {14,13,11,11,10, 9, 9, 8, 7, 7, 6, 5 }, // 60 {14,13,11,11,10, 9, 9, 8, 7, 7, 6, 6 }, {14,13,12,11,10, 9, 9, 8, 8, 7, 6, 6 }, {14,13,12,11,10,10, 9, 8, 8, 7, 7, 6 }, {14,13,12,11,10,10, 9, 8, 8, 7, 7, 6 }, {16,16,16,16,16,16, 9, 8, 8, 7, 7, 6 }, // 65 }; struct spell_type spells_table [MAX_SPELL] = { /* * Magic spells. */ { "reserved", { L_APP }, 0, TAR_IGNORE, FALSE, NULL, 0, 0, "", "", "", "", "", "", "", SCHOOL_NONE, MANA_NONE, }, { "acid blast", { L_APP }, spell_acid_blast, TAR_CHAR_OFFENSIVE, TRUE, NULL, 20, 12, "acid blast", "", "", "", "", "", "!Acid Blast!", SCHOOL_EVOCATION, MANA_WATER }, { "armor", { L_APP }, spell_armor, TAR_CHAR_DEFENSIVE, TRUE, &spl_armor, 5, 12, "", "", "", "", "", "", "You feel less protected.", SCHOOL_CONJURATION, MANA_EARTH }, { "bless", { L_APP }, spell_bless, TAR_CHAR_DEFENSIVE, FALSE, &spl_bless, 5, 12, "", "", "", "", "", "", "You feel less righteous.", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, { "blindness", { L_APP }, spell_blindness, TAR_CHAR_OFFENSIVE, TRUE, &spl_blindness, 5, 12, "", "", "", "", "", "", "You can see again.", SCHOOL_ABJURATION | SCHOOL_NECROMANCY, MANA_FIRE }, { "breathe water", { L_APP }, spell_breathe_water, TAR_CHAR_DEFENSIVE, FALSE, &spl_breathe_water, 5, 12, "pained lungs", "", "", "", "", "", "You can no longer breathe underwater.", SCHOOL_SURVIVAL, MANA_WATER }, { "burning hands", { L_APP }, spell_burning_hands, TAR_CHAR_OFFENSIVE, TRUE, &spl_burning_hands, 15, 12, "burning hands", "", "", "", "", "", "!Burning Hands!", SCHOOL_ALTERATION, MANA_FIRE }, { "call lightning", { L_APP }, spell_call_lightning, TAR_IGNORE, TRUE, NULL, 15, 12, "lightning bolt", "", "", "", "", "", "!Call Lightning!", SCHOOL_ALTERATION, MANA_AIR }, { "cause critical", { L_APP }, spell_cause_critical, TAR_CHAR_OFFENSIVE, TRUE, NULL, 20, 12, "invocation", "", "", "", "", "", "!Cause Critical!", SCHOOL_NECROMANCY, MANA_AIR }, { "cause light", { L_APP }, spell_cause_light, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "invocation", "", "", "", "", "", "!Cause Light!", SCHOOL_NECROMANCY, MANA_AIR }, { "cause serious", { L_APP }, spell_cause_serious, TAR_CHAR_OFFENSIVE, TRUE, NULL, 17, 12, "invocation", "", "", "", "", "", "!Cause Serious!", SCHOOL_NECROMANCY, MANA_AIR }, { "change sex", { L_APP }, spell_change_sex, TAR_CHAR_DEFENSIVE, TRUE, NULL, 15, 0, "", "", "", "", "", "", "Your body feels familiar again.", SCHOOL_ENCHANTMENT | SCHOOL_ALTERATION, MANA_ANY }, { "charm person", { L_APP }, spell_charm_person, TAR_CHAR_OFFENSIVE, FALSE, &spl_charm_person, 5, 12, "", "", "", "", "", "", "You feel more self-confident.", SCHOOL_ENCHANTMENT | SCHOOL_CHARM, MANA_ANY }, { "chill touch", { L_APP }, spell_chill_touch, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "chilling touch", "", "", "", "", "", "You feel less cold.", SCHOOL_NECROMANCY, MANA_WATER }, { "colour spray", { L_APP }, spell_colour_spray, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "colour spray", "", "", "", "", "", "!Colour Spray!", SCHOOL_ALTERATION, MANA_AIR }, { "silence", { L_APP }, spell_cone_of_silence, TAR_IGNORE, TRUE, NULL, 35, 12, "", "", "", "", "", "", "!Cone of Silence!", SCHOOL_INVOCATION, MANA_EARTH }, { "continual light", { L_APP }, spell_continual_light, TAR_IGNORE, FALSE, NULL, 7, 12, "", "", "", "", "", "", "!Continual Light!", SCHOOL_ALTERATION, MANA_FIRE }, { "control weather", { L_APP }, spell_control_weather, TAR_IGNORE, FALSE, NULL, 25, 12, "", "", "", "", "", "", "!Control Weather!", SCHOOL_ALTERATION, MANA_AIR }, { "create food", { L_APP }, spell_create_food, TAR_IGNORE, FALSE, NULL, 5, 12, "", "", "", "", "", "", "!Create Food!", SCHOOL_CONJURATION, MANA_EARTH }, { "create skin", { L_APP }, spell_create_water, TAR_IGNORE, FALSE, NULL, 20, 12, "", "", "", "", "", "", "!Create Skin!", SCHOOL_CONJURATION, MANA_WATER }, { "create water", { L_APP }, spell_create_water, TAR_OBJ_INV, FALSE, NULL, 5, 12, "", "", "", "", "", "", "!Create Water!", SCHOOL_ALTERATION, MANA_WATER }, { "cure blindness", { L_APP }, spell_cure_blindness, TAR_CHAR_DEFENSIVE, TRUE, NULL, 5, 12, "", "", "", "", "", "", "!Cure Blindness!", SCHOOL_ABJURATION | SCHOOL_NECROMANCY, MANA_WATER }, { "cure critical", { L_APP }, spell_cure_critical, TAR_CHAR_DEFENSIVE, TRUE, NULL, 20, 12, "", "", "", "", "", "", "!Cure Critical!", SCHOOL_NECROMANCY, MANA_EARTH }, { "cure disease", { L_APP }, spell_cure_disease, TAR_CHAR_DEFENSIVE, TRUE, NULL, 20, 12, "", "", "", "", "", "", "!Cure Disease!", SCHOOL_ABJURATION | SCHOOL_NECROMANCY, MANA_WATER }, { "cure light", { L_APP }, spell_cure_light, TAR_CHAR_DEFENSIVE, TRUE, NULL, 10, 12, "", "", "", "", "", "", "!Cure Light!", SCHOOL_NECROMANCY, MANA_EARTH }, { "cure poison", { L_APP }, spell_cure_poison, TAR_CHAR_DEFENSIVE, TRUE, NULL, 5, 12, "", "", "", "", "", "", "!Cure Poison!", SCHOOL_ABJURATION | SCHOOL_NECROMANCY, MANA_WATER }, { "cure serious", { L_APP }, spell_cure_serious, TAR_CHAR_DEFENSIVE, TRUE, NULL, 15, 12, "", "", "", "", "", "", "!Cure Serious!", SCHOOL_NECROMANCY, MANA_EARTH }, { "curse", { L_APP }, spell_curse, TAR_CHAR_OFFENSIVE, TRUE, &spl_curse, 20, 12, "curse", "", "", "", "", "", "The curse wears off.", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, { "destroy cursed", { L_APP }, spell_destroy_cursed, TAR_CHAR_DEFENSIVE, FALSE, NULL, 20, 12, "", "", "", "", "", "", "!destroy cursed!", SCHOOL_NECROMANCY, MANA_EARTH }, { "detect evil", { L_APP }, spell_detect_evil, TAR_CHAR_SELF, FALSE, &spl_detect_evil, 5, 12, "", "", "", "", "", "", "The red in your vision disappears.", SCHOOL_DIVINATION, MANA_FIRE }, { "detect hidden", { L_APP }, spell_detect_hidden, TAR_CHAR_SELF, FALSE, NULL, 5, 12, "", "", "", "", "", "", "You feel less aware of your surroundings.", SCHOOL_DIVINATION, MANA_FIRE }, { "detect invis", { L_APP }, spell_detect_invis, TAR_CHAR_SELF, FALSE, &spl_detect_invis, 5, 12, "", "", "", "", "", "", "You no longer see invisible objects.", SCHOOL_DIVINATION, MANA_FIRE }, { "detect magic", { L_APP }, spell_detect_magic, TAR_CHAR_SELF, FALSE, &spl_detect_magic, 5, 12, "", "", "", "", "", "", "The detect magic wears off.", SCHOOL_DIVINATION, MANA_FIRE }, { "detect poison", { L_APP }, spell_detect_poison, TAR_OBJ_INV, FALSE, NULL, 5, 12, "", "", "", "", "", "", "!Detect Poison!", SCHOOL_DIVINATION, MANA_FIRE }, { "dispel evil", { L_APP }, spell_dispel_evil, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "holy fire", "", "", "", "", "", "!Dispel Evil!", SCHOOL_ABJURATION, MANA_WATER }, { "dispel magic", { L_APP }, spell_dispel_magic, TAR_CHAR_DEFENSIVE, TRUE, NULL, 15, 16, "", "", "", "", "", "", "!Dispel Magic!", SCHOOL_ABJURATION, MANA_EARTH }, { "earthquake", { L_APP }, spell_earthquake, TAR_IGNORE, TRUE, NULL, 15, 12, "earthquake", "", "", "", "", "", "!Earthquake!", SCHOOL_ALTERATION, MANA_EARTH }, { "enchant weapon", { L_APP }, spell_enchant_weapon, TAR_OBJ_INV, FALSE, NULL, 100, 24, "", "", "", "", "", "", "!Enchant Weapon!", SCHOOL_ENCHANTMENT, MANA_FIRE }, { "energy drain", { L_APP }, spell_energy_drain, TAR_CHAR_OFFENSIVE, FALSE, NULL, 35, 12, "energy drain", "", "", "", "", "", "!Energy Drain!", SCHOOL_NECROMANCY, MANA_FIRE }, { "exorcise", { L_APP }, spell_exorcise, TAR_CHAR_DEFENSIVE, TRUE, NULL, 35, 12, "", "", "", "", "", "", "!Exorcise!", SCHOOL_ALTERATION | SCHOOL_NECROMANCY, MANA_WATER }, { "faerie fire", { L_APP }, spell_faerie_fire, TAR_CHAR_OFFENSIVE, TRUE, NULL, 5, 12, "faerie fire", "", "", "", "", "", "The pink aura around you fades away.", SCHOOL_ALTERATION, MANA_FIRE }, { "faerie fog", { L_APP }, spell_faerie_fog, TAR_IGNORE, TRUE, NULL, 12, 12, "faerie fog", "", "", "", "", "", "!Faerie Fog!", SCHOOL_CONJURATION, MANA_AIR }, { "fireball", { L_APP }, spell_fireball, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "fireball", "", "", "", "", "", "!Fireball!", SCHOOL_EVOCATION, MANA_FIRE }, { "flamestrike", { L_APP }, spell_flamestrike, TAR_CHAR_OFFENSIVE, TRUE, NULL, 20, 12, "flamestrike", "", "", "", "", "", "!Flamestrike!", SCHOOL_CONJURATION, MANA_FIRE }, { "fly", { L_APP }, spell_fly, TAR_CHAR_DEFENSIVE, FALSE, &spl_fly, 10, 18, "", "", "", "", "", "", "You slowly float to the ground.", SCHOOL_ALTERATION, MANA_AIR }, { "gate", { L_APP }, spell_gate, TAR_CHAR_DEFENSIVE, FALSE, NULL, 50, 12, "", "", "", "", "", "", "!Gate!", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_EARTH }, { "giant strength", { L_APP }, spell_giant_strength, TAR_CHAR_DEFENSIVE, FALSE, &spl_giant_strength, 20, 12, "", "", "", "", "", "", "You feel weaker.", SCHOOL_ALTERATION, MANA_EARTH }, { "harm", { L_APP }, spell_harm, TAR_CHAR_OFFENSIVE, TRUE, NULL, 35, 12, "divine power", "", "", "", "", "", "!Harm!", SCHOOL_NECROMANCY, MANA_EARTH }, { "heal", { L_APP }, spell_heal, TAR_CHAR_DEFENSIVE, TRUE, NULL, 50, 12, "", "", "", "", "", "", "!Heal!", SCHOOL_NECROMANCY, MANA_EARTH }, { "identify", { L_APP }, spell_identify, TAR_OBJ_INV, FALSE, NULL, 12, 24, "", "", "", "", "", "", "!Identify!", SCHOOL_DIVINATION, MANA_ANY }, { "infravision", { L_APP }, spell_infravision, TAR_CHAR_DEFENSIVE, FALSE, &spl_infravision, 5, 18, "", "", "", "", "", "", "You no longer see in the dark.", SCHOOL_ILLUSION, MANA_FIRE }, { "invis", { L_APP }, spell_invis, TAR_CHAR_DEFENSIVE, FALSE, &spl_invis, 5, 12, "", "", "", "", "", "", "You are no longer invisible.", SCHOOL_ILLUSION, MANA_AIR }, { "know alignment", { L_APP }, spell_know_alignment, TAR_CHAR_DEFENSIVE, FALSE, NULL, 9, 12, "", "", "", "", "", "", "!Know Alignment!", SCHOOL_DIVINATION, MANA_FIRE }, { "lightning bolt", { L_APP }, spell_lightning_bolt, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "lightning bolt", "", "", "", "", "", "!Lightning Bolt!", SCHOOL_EVOCATION, MANA_FIRE }, { "locate object", { L_APP }, spell_locate_object, TAR_IGNORE, FALSE, NULL, 20, 18, "", "", "", "", "", "", "!Locate Object!", SCHOOL_DIVINATION, MANA_ANY }, { "magic missile", { L_APP }, spell_magic_missile, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "magic missile", "", "", "", "", "", "!Magic Missile!", SCHOOL_EVOCATION, MANA_FIRE }, { "mass heal", { L_APP }, spell_mass_heal, TAR_IGNORE, TRUE, NULL, 50, 24, "", "", "", "", "", "", "!Mass Heal!", SCHOOL_NECROMANCY, MANA_EARTH }, { "mass invis", { L_APP }, spell_mass_invis, TAR_IGNORE, FALSE, &spl_mass_invis, 20, 24, "", "", "", "", "", "", "You are no longer invisible.", SCHOOL_ILLUSION, MANA_AIR }, { "mute", { L_APP }, spell_mute, TAR_CHAR_OFFENSIVE, TRUE, &spl_mute, 20, 12, "", "", "", "", "", "", "You are no longer muted.", SCHOOL_ABJURATION | SCHOOL_NECROMANCY, MANA_WATER }, { "pass door", { L_APP }, spell_pass_door, TAR_CHAR_SELF, FALSE, NULL, 20, 12, "", "", "", "", "", "", "You feel solid again.", SCHOOL_ALTERATION, MANA_AIR }, { "plague", { L_APP }, spell_plague, TAR_CHAR_OFFENSIVE, TRUE, &spl_plague, 20, 12, "sickness", "", "", "", "", "", "Your sores vanish.", SCHOOL_NECROMANCY, MANA_WATER }, { "poison", { L_APP }, spell_poison, TAR_CHAR_OFFENSIVE, TRUE, &spl_poison, 10, 12, "burning blood", "", "", "", "", "", "You feel less sick.", SCHOOL_NECROMANCY, MANA_WATER }, { "polymorph other", { L_APP }, spell_polymorph_other, TAR_CHAR_DEFENSIVE, TRUE, NULL, 20, 0, "", "", "", "", "", "", "Your body feels familiar again.", SCHOOL_ALTERATION, MANA_ANY }, { "protection", { L_APP }, spell_protection_evil, TAR_CHAR_SELF, FALSE, NULL, 5, 12, "", "", "", "", "", "", "You feel less protected.", SCHOOL_ABJURATION, MANA_FIRE }, { "protection evil", { L_APP }, spell_protection_evil, TAR_CHAR_SELF, FALSE, NULL, 5, 12, "", "", "", "", "", "", "You feel less protected.", SCHOOL_ABJURATION, MANA_FIRE }, { "protection good", { L_APP }, spell_protection_good, TAR_CHAR_SELF, FALSE, NULL, 5, 12, "", "", "", "", "", "", "You feel less protected.", SCHOOL_ABJURATION, MANA_FIRE }, { "recharge item", { L_APP }, spell_recharge_item, TAR_OBJ_INV, FALSE, NULL, 25, 12, "blunder", "", "", "", "", "", "!Recharge Item!", SCHOOL_INVOCATION | SCHOOL_ENCHANTMENT, MANA_ANY }, { "refresh", { L_APP }, spell_refresh, TAR_CHAR_DEFENSIVE, FALSE, NULL, 12, 18, "refresh", "", "", "", "", "", "!Refresh!", SCHOOL_ALTERATION, MANA_EARTH }, { "remove alignment", { L_APP }, spell_remove_alignment, TAR_OBJ_INV, FALSE, NULL, 10, 12, "", "", "", "", "", "", "!Remove Alignment!", SCHOOL_ABJURATION, MANA_WATER }, { "remove curse", { L_APP }, spell_remove_curse, TAR_CHAR_DEFENSIVE, FALSE, NULL, 5, 12, "", "", "", "", "", "", "!Remove Curse!", SCHOOL_ABJURATION, MANA_WATER }, { "remove silence", { L_APP }, spell_remove_silence, TAR_CHAR_DEFENSIVE, TRUE, NULL, 15, 12, "", "", "", "", "", "", "!Remove Silence!", SCHOOL_ABJURATION | SCHOOL_NECROMANCY, MANA_WATER }, { "sanctuary", { L_APP }, spell_sanctuary, TAR_CHAR_DEFENSIVE, FALSE, NULL, 75, 12, "", "", "", "", "", "", "The white aura around your body fades.", SCHOOL_ABJURATION, MANA_WATER }, { "shield", { L_APP }, spell_shield, TAR_CHAR_DEFENSIVE, FALSE, NULL, 12, 18, "", "", "", "", "", "", "Your force shield shimmers then fades away.", SCHOOL_CONJURATION, MANA_ANY }, { "shocking grasp", { L_APP }, spell_shocking_grasp, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "shocking grasp", "", "", "", "", "", "!Shocking Grasp!", SCHOOL_EVOCATION, MANA_FIRE }, { "sleep", { L_APP }, spell_sleep, TAR_CHAR_OFFENSIVE, TRUE, &spl_sleep, 15, 12, "", "", "", "", "", "", "You feel less tired.", SCHOOL_ENCHANTMENT | SCHOOL_CHARM, MANA_EARTH }, { "stone skin", { L_APP }, spell_stone_skin, TAR_CHAR_SELF, TRUE, NULL, 12, 18, "", "", "", "", "", "", "Your skin feels soft again.", SCHOOL_ALTERATION, MANA_EARTH }, { "summon", { L_APP }, spell_summon, TAR_IGNORE, FALSE, NULL, 50, 12, "", "", "", "", "", "", "!Summon!", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, { "teleport", { L_APP }, spell_teleport, TAR_CHAR_SELF, TRUE, NULL, 35, 12, "", "", "", "", "", "", "!Teleport!", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, { "turn undead", { L_APP }, spell_turn_undead, TAR_CHAR_OFFENSIVE, TRUE, &spl_turn_undead, 10, 12, "divine exorcism", "", "", "", "", "", "!Turn undead!", SCHOOL_NECROMANCY, MANA_WATER }, { "ventriloquate", { L_APP }, spell_ventriloquate, TAR_IGNORE, TRUE, NULL, 5, 12, "", "", "", "", "", "", "!Ventriloquate!", SCHOOL_PHANTASM, MANA_AIR }, { "weaken", { L_APP }, spell_weaken, TAR_CHAR_OFFENSIVE, TRUE, NULL, 20, 12, "weakening spell", "", "", "", "", "", "You feel stronger.", SCHOOL_NECROMANCY, MANA_WATER }, { "word of recall", { L_APP }, spell_word_of_recall, TAR_CHAR_SELF, TRUE, NULL, 5, 12, "", "", "", "", "", "", "!Word of Recall!", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, /* * Dragon breath. */ { "acid breath", { L_APP }, spell_acid_breath, TAR_CHAR_OFFENSIVE, TRUE, NULL, 50, 12, "breath of acid", "", "", "", "", "", "!Acid Breath!", SCHOOL_EVOCATION, MANA_WATER }, { "fire breath", { L_APP }, spell_fire_breath, TAR_CHAR_OFFENSIVE, TRUE, NULL, 50, 12, "breath of flame", "", "", "", "", "", "!Fire Breath!", SCHOOL_EVOCATION, MANA_FIRE }, { "frost breath", { L_APP }, spell_frost_breath, TAR_CHAR_OFFENSIVE, TRUE, NULL, 50, 12, "breath of frost", "", "", "", "", "", "!Frost Breath!", SCHOOL_EVOCATION, MANA_WATER }, { "gas breath", { L_APP }, spell_gas_breath, TAR_IGNORE, TRUE, NULL, 50, 12, "breath of gas", "", "", "", "", "", "!Gas Breath!", SCHOOL_EVOCATION, MANA_AIR }, { "lightning breath", { L_APP }, spell_lightning_breath, TAR_CHAR_OFFENSIVE, TRUE, NULL, 50, 12, "breath of lightning", "", "", "", "", "", "!Lightning Breath!", SCHOOL_EVOCATION, MANA_ANY }, /* * Spells for mega1.are from Glop/Erkenbrand. */ { "general purpose", { L_APP }, spell_general_purpose, TAR_CHAR_OFFENSIVE, TRUE, NULL, 0, 12, "general purpose ammo", "", "", "", "", "", "!General Purpose Ammo!", SCHOOL_NONE, MANA_NONE }, { "high explosive", { L_APP }, spell_high_explosive, TAR_CHAR_OFFENSIVE, TRUE, NULL, 0, 12, "high explosive ammo", "", "", "", "", "", "!High Explosive Ammo!", SCHOOL_NONE, MANA_NONE }, /* * Psionicist spell/skill definitions * Psi class conceived, created, and coded by Thelonius (EnvyMud) */ { "adrenaline control", { L_APP }, spell_adrenaline_control, TAR_CHAR_SELF, FALSE, NULL, 6, 12, "", "", "", "", "", "", "The adrenaline rush wears off.", SCHOOL_ALTERATION, MANA_WATER }, { "agitation", { L_APP }, spell_agitation, TAR_CHAR_OFFENSIVE, TRUE, NULL, 10, 12, "molecular agitation", "", "", "", "", "", "!Agitation!", SCHOOL_EVOCATION, MANA_AIR }, { "aura sight", { L_APP }, spell_aura_sight, TAR_CHAR_DEFENSIVE, FALSE, NULL, 9, 12, "", "", "", "", "", "", "!Aura Sight!", SCHOOL_DIVINATION, MANA_FIRE }, { "awe", { L_APP }, spell_awe, TAR_CHAR_DEFENSIVE, FALSE, NULL, 35, 12, "", "", "", "", "", "", "!Awe!", SCHOOL_PHANTASM, MANA_WATER }, { "ballistic attack", { L_APP }, spell_ballistic_attack, TAR_CHAR_OFFENSIVE, TRUE, NULL, 5, 12, "ballistic attack", "", "", "", "", "", "!Ballistic Attack!", SCHOOL_EVOCATION, MANA_AIR }, { "biofeedback", { L_APP }, spell_biofeedback, TAR_CHAR_SELF, TRUE, NULL, 75, 12, "", "", "", "", "", "", "Your biofeedback is no longer effective.", SCHOOL_ALTERATION, MANA_WATER }, { "cell adjustment", { L_APP }, spell_cell_adjustment, TAR_CHAR_SELF, TRUE, NULL, 8, 12, "", "", "", "", "", "", "!Cell Adjustment!", SCHOOL_ALTERATION, MANA_EARTH }, { "combat mind", { L_APP }, spell_combat_mind, TAR_CHAR_DEFENSIVE, FALSE, NULL, 15, 12, "", "", "", "", "", "", "Your battle sense has faded.", SCHOOL_EVOCATION | SCHOOL_SUMMONING, MANA_EARTH }, { "complete healing", { L_APP }, spell_complete_healing, TAR_CHAR_SELF, TRUE, NULL, 100, 12, "", "", "", "", "", "", "!Complete Healing!", SCHOOL_NECROMANCY, MANA_EARTH }, { "control flames", { L_APP }, spell_control_flames, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 12, "tongue of flame", "", "", "", "", "", "!Control Flames!", SCHOOL_EVOCATION, MANA_FIRE }, { "create sound", { L_APP }, spell_create_sound, TAR_CHAR_DEFENSIVE, TRUE, NULL, 5, 12, "", "", "", "", "", "", "!Create Sound!", SCHOOL_PHANTASM, MANA_AIR }, { "death field", { L_APP }, spell_death_field, TAR_IGNORE, TRUE, NULL, 200, 18, "field of death", "", "", "", "", "", "!Death Field!", SCHOOL_EVOCATION | SCHOOL_NECROMANCY, MANA_FIRE }, { "detonate", { L_APP }, spell_detonate, TAR_CHAR_OFFENSIVE, TRUE, NULL, 35, 24, "detonation", "", "", "", "", "", "!Detonate!", SCHOOL_EVOCATION, MANA_FIRE }, { "disintegrate", { L_APP }, spell_disintegrate, TAR_CHAR_OFFENSIVE, TRUE, NULL, 150, 18, "disintegration", "", "", "", "", "", "!Disintegrate!", SCHOOL_EVOCATION | SCHOOL_NECROMANCY, MANA_FIRE }, { "displacement", { L_APP }, spell_displacement, TAR_CHAR_SELF, FALSE, NULL, 10, 12, "", "", "", "", "", "", "You are no longer displaced.", SCHOOL_ALTERATION, MANA_AIR }, { "domination", { L_APP }, spell_domination, TAR_CHAR_OFFENSIVE, FALSE, &spl_domination, 5, 12, "", "", "", "", "", "", "You regain control of your body.", SCHOOL_ENCHANTMENT | SCHOOL_CHARM, MANA_ANY }, { "ectoplasmic form", { L_APP }, spell_ectoplasmic_form, TAR_CHAR_SELF, FALSE, NULL, 20, 12, "", "", "", "", "", "", "You feel solid again.", SCHOOL_ALTERATION, MANA_AIR }, { "ego whip", { L_APP }, spell_ego_whip, TAR_CHAR_OFFENSIVE, TRUE, NULL, 20, 12, "", "", "", "", "", "", "You feel more confident.", SCHOOL_PHANTASM, MANA_WATER }, { "energy containment", { L_APP }, spell_energy_containment, TAR_CHAR_SELF, FALSE, NULL, 10, 12, "", "", "", "", "", "", "You no longer absorb energy.", SCHOOL_ALTERATION, MANA_EARTH }, { "enhance armor", { L_APP }, spell_enhance_armor, TAR_OBJ_INV, FALSE, NULL, 100, 24, "", "", "", "", "", "", "!Enhance Armor!", SCHOOL_ENCHANTMENT, MANA_FIRE }, { "enhanced strength", { L_APP }, spell_enhanced_strength, TAR_CHAR_SELF, FALSE, NULL, 20, 12, "", "", "", "", "", "", "You no longer feel so HUGE.", SCHOOL_ALTERATION, MANA_EARTH }, { "flesh armor", { L_APP }, spell_flesh_armor, TAR_CHAR_SELF, FALSE, NULL, 15, 12, "", "", "", "", "", "", "Your skin returns to normal.", SCHOOL_ALTERATION, MANA_EARTH }, { "inertial barrier", { L_APP }, spell_inertial_barrier, TAR_IGNORE, TRUE, NULL, 40, 24, "", "", "", "", "", "", "Your inertial barrier dissipates.", SCHOOL_CONJURATION, MANA_AIR }, { "inflict pain", { L_APP }, spell_inflict_pain, TAR_CHAR_OFFENSIVE, TRUE, NULL, 10, 12, "mindpower", "", "", "", "", "", "!Inflict Pain!", SCHOOL_EVOCATION, MANA_FIRE }, { "intellect fortress", { L_APP }, spell_intellect_fortress, TAR_IGNORE, FALSE, NULL, 25, 24, "", "", "", "", "", "", "Your intellectual fortress crumbles.", SCHOOL_EVOCATION, MANA_ANY }, { "lend health", { L_APP }, spell_lend_health, TAR_CHAR_DEFENSIVE, TRUE, NULL, 10, 12, "", "", "", "", "", "", "!Lend Health!", SCHOOL_NECROMANCY, MANA_EARTH }, { "levitation", { L_APP }, spell_levitation, TAR_CHAR_DEFENSIVE, FALSE, &spl_levitation, 10, 18, "", "", "", "", "", "", "You slowly float to the ground.", SCHOOL_ALTERATION, MANA_AIR }, { "mental barrier", { L_APP }, spell_mental_barrier, TAR_CHAR_SELF, FALSE, NULL, 8, 12, "", "", "", "", "", "", "Your mental barrier breaks down.", SCHOOL_CONJURATION, MANA_EARTH }, { "mind thrust", { L_APP }, spell_mind_thrust, TAR_CHAR_OFFENSIVE, TRUE, NULL, 8, 12, "mind thrust", "", "", "", "", "", "!Mind Thrust!", SCHOOL_PHANTASM, MANA_WATER }, { "project force", { L_APP }, spell_project_force, TAR_CHAR_OFFENSIVE, TRUE, NULL, 18, 12, "projected force", "", "", "", "", "", "!Project Force!", SCHOOL_EVOCATION, MANA_EARTH }, { "psionic blast", { L_APP }, spell_psionic_blast, TAR_CHAR_OFFENSIVE, TRUE, NULL, 25, 12, "psionic blast", "", "", "", "", "", "!Psionic Blast!", SCHOOL_EVOCATION, MANA_FIRE }, { "psychic crush", { L_APP }, spell_psychic_crush, TAR_CHAR_OFFENSIVE, TRUE, NULL, 15, 18, "psychic crush", "", "", "", "", "", "!Psychic Crush!", SCHOOL_EVOCATION, MANA_EARTH }, { "psychic drain", { L_APP }, spell_psychic_drain, TAR_CHAR_OFFENSIVE, TRUE, NULL, 20, 12, "", "", "", "", "", "", "You no longer feel drained.", SCHOOL_NECROMANCY, MANA_FIRE }, { "psychic healing", { L_APP }, spell_psychic_healing, TAR_CHAR_SELF, TRUE, NULL, 20, 12, "", "", "", "", "", "", "!Psychic Healing!", SCHOOL_NECROMANCY, MANA_EARTH }, { "share strength", { L_APP }, spell_share_strength, TAR_CHAR_DEFENSIVE, FALSE, NULL, 8, 12, "", "", "", "", "", "", "You no longer share strength with another.", SCHOOL_CONJURATION, MANA_EARTH }, { "thought shield", { L_APP }, spell_thought_shield, TAR_CHAR_SELF, FALSE, NULL, 5, 12, "", "", "", "", "", "", "You no longer feel so protected.", SCHOOL_CONJURATION, MANA_ANY }, { "ultrablast", { L_APP }, spell_ultrablast, TAR_IGNORE, TRUE, NULL, 75, 24, "ultrablast", "", "", "", "", "", "!Ultrablast!", SCHOOL_EVOCATION, MANA_FIRE }, /* * Spells & skills here by Zen. */ { "meteor swarm", { L_APP }, spell_meteor_swarm, TAR_IGNORE, TRUE, NULL, 20, 12, "meteor swarm", "", "", "", "", "", "!Meteor Swarm!", SCHOOL_EVOCATION, MANA_AIR }, { "chain lightning", { L_APP }, spell_chain_lightning, TAR_CHAR_OFFENSIVE, TRUE, NULL, 25, 12, "lightning", "", "", "", "", "", "!Chain Lightning!", SCHOOL_EVOCATION, MANA_FIRE }, { "wizard eye", { L_APP }, spell_wizard_eye, TAR_IGNORE, FALSE, NULL, 40, 12, "", "", "", "", "", "", "!Wizard Eye!", SCHOOL_DIVINATION, MANA_AIR }, { "vortex lift", { L_APP }, spell_vortex_lift, TAR_IGNORE, FALSE, NULL, 60, 12, "", "", "", "", "", "", "!Vortex Lift!", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, { "mass vortex lift", { L_APP }, spell_mass_vortex_lift, TAR_IGNORE, FALSE, &spl_mass_vortex_lift, 150, 12, "", "", "", "", "", "", "!Mass Vortex Lift!", SCHOOL_CONJURATION | SCHOOL_SUMMONING, MANA_AIR }, { "detect good", { L_APP }, spell_detect_good, TAR_CHAR_SELF, FALSE, &spl_detect_good, 5, 12, "", "", "", "", "", "", "The gold in your vision disappears.", SCHOOL_DIVINATION, MANA_FIRE }, { "dispel good", { L_APP }, spell_dispel_good, TAR_CHAR_OFFENSIVE, FALSE, NULL, 15, 12, "unholy fire", "", "", "", "", "", "!Dispel Good!", SCHOOL_ABJURATION, MANA_FIRE }, { "power word lag", { L_APP }, spell_power_word_lag, TAR_CHAR_DEFENSIVE, FALSE, NULL, 15, 6, "", "", "", "", "", "", "!Power Word Lag!", SCHOOL_ABJURATION, MANA_EARTH }, { "portal", { L_APP }, spell_portal, TAR_IGNORE, FALSE, NULL, 100, 24, "", "", "", "", "", "", "!Portal!", SCHOOL_CONJURATION | SCHOOL_ENCHANTMENT, MANA_AIR }, { "nexus", { L_APP }, spell_nexus, TAR_IGNORE, FALSE, NULL, 150, 36, "", "", "", "", "", "", "!Nexus!", SCHOOL_CONJURATION | SCHOOL_ENCHANTMENT, MANA_AIR }, { "create buffet", { L_APP }, spell_create_buffet, TAR_IGNORE, FALSE, NULL, 33, 12, "", "", "", "", "", "", "!Create Buffet!", SCHOOL_CONJURATION, MANA_EARTH }, { "flaming shield", { L_APP }, spell_flame_shield, TAR_CHAR_SELF, FALSE, &spl_flame_shield, 100, 60, "flaming shield", "", "", "", "", "", "The flaming shield around you dies out.", SCHOOL_EVOCATION | SCHOOL_ALTERATION, MANA_FIRE }, { "frost shield", { L_APP }, spell_frost_shield, TAR_CHAR_SELF, FALSE, &spl_frost_shield, 100, 60, "frost shield", "", "", "", "", "", "The frost shield around you melts and evaporates into nothingness.", SCHOOL_EVOCATION | SCHOOL_ALTERATION, MANA_WATER }, { "shock shield", { L_APP }, spell_shock_shield, TAR_CHAR_SELF, FALSE, &spl_shock_shield, 100, 60, "shock shield", "", "", "", "", "", "The torrents of cascading energy suddenly fade away.", SCHOOL_EVOCATION | SCHOOL_ALTERATION, MANA_AIR }, { "ethereal shield", { L_APP }, spell_ethereal_shield, TAR_CHAR_SELF, FALSE, NULL, 50, 60, "", "", "", "", "", "", "You are returned to the mundane energy continuum.", SCHOOL_ALTERATION, MANA_FIRE }, };