/* * The unique portions of SunderMud code as well as the integration efforts * for code from other sources is based on the efforts of: * * Lotherius (elfren@aros.net) * * This code can only be used under the terms of the DikuMud, Merc, * and ROM licenses. The same requirements apply to the changes that * have been made. * * All other copyrights remain in place and in force. */ /*************************************************************************** * 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. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ #include "everything.h" #include "magic.h" /* Zeran - administrative staff table (useful for note to admin) */ const char *admin_table[] = { "Zeran", "Lotherius", "Eardianm", "Cyz", "Ashind" "" }; /* Zeran - material table */ const struct material_data material_table [] = { /* { material name ,material_type, vuln_flag } */ { "wood", MATERIAL_WOOD, VULN_WOOD }, { "iron", MATERIAL_IRON, VULN_IRON }, { "silver", MATERIAL_SILVER, VULN_SILVER }, { "gold", MATERIAL_GOLD, 0 }, { "adamantite", MATERIAL_ADAMANTITE,VULN_ADAMANTITE }, { "cloth", MATERIAL_CLOTH, 0 }, { "glass", MATERIAL_GLASS, 0 }, { "food", MATERIAL_FOOD, 0 }, { "liquid", MATERIAL_LIQUID, 0 }, { "mithril", MATERIAL_MITHRIL, VULN_MITHRIL }, { "steel", MATERIAL_STEEL, VULN_STEEL }, { "paper", MATERIAL_PAPER, 0 }, { "meat", MATERIAL_MEAT, 0 }, { "flesh", MATERIAL_FLESH, 0 }, { "leather", MATERIAL_LEATHER, 0 }, { "pill", MATERIAL_PILL, 0 }, { "vellum", MATERIAL_VELLUM, 0 }, { "bronze", MATERIAL_BRONZE, 0 }, { "brass", MATERIAL_BRASS, 0 }, { "stone", MATERIAL_STONE, 0 }, { "bone", MATERIAL_BONE, 0 }, { "unique", MATERIAL_UNIQUE, 0 }, { "crystal", MATERIAL_CRYSTAL, 0 }, { "diamond", MATERIAL_DIAMOND, 0 }, { "unknown", 0, 0 } }; /* Zeran - condition table */ const char *cond_table [] = { "perfect", "almost perfect", "slightly worn", "moderately worn", "heavily worn", "badly worn", "barely usable", "worthless" }; /* Zeran - size name table */ const char *size_table [] = { "tiny", "small", "medium", "large", "huge", "giant" }; /* attack table -- not very organized :( */ const struct attack_type attack_table [] = { { "hit", -1 }, /* 0 */ { "slice", DAM_SLASH }, { "stab", DAM_PIERCE }, { "slash", DAM_SLASH }, { "whip", DAM_SLASH }, { "claw", DAM_SLASH }, /* 5 */ { "blast", DAM_BASH }, { "pound", DAM_BASH }, { "crush", DAM_BASH }, { "grep", DAM_SLASH }, { "bite", DAM_PIERCE }, /* 10 */ { "pierce", DAM_PIERCE }, { "suction", DAM_BASH }, { "beating", DAM_BASH }, { "digestion",DAM_ACID }, { "charge", DAM_BASH }, /* 15 */ { "slap", DAM_BASH }, { "punch", DAM_BASH }, { "wrath", DAM_ENERGY }, { "magic", DAM_ENERGY }, { "divine power", DAM_HOLY }, /* 20 */ { "cleave", DAM_SLASH }, { "scratch", DAM_PIERCE }, { "peck", DAM_PIERCE }, { "peck", DAM_BASH }, { "chop", DAM_SLASH }, /* 25 */ { "sting", DAM_PIERCE }, { "smash", DAM_BASH }, { "shocking bite",DAM_LIGHTNING }, { "flaming bite", DAM_FIRE }, { "freezing bite", DAM_COLD }, /* 30 */ { "acidic bite", DAM_ACID }, { "chomp", DAM_PIERCE }, { "left wing", DAM_SLASH }, /*start of special race attacks*/ { "right wing", DAM_SLASH }, { "hooves", DAM_BASH }, /* 35 */ { "horns", DAM_PIERCE }, { "flaming aura", DAM_FIRE } }; /* race table */ const struct race_type race_table [] = { /* { name, pc_race?, act bits, aff_by bits, off bits, imm, res, vuln, form, parts }, */ /* 1 */ { "unique", FALSE, 0, 0, 0, 0, 0, 0, 0, 0 }, /* 2 */ { "human", TRUE, 0, 0, 0, 0, 0, 0, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K }, /* 3 */ { "azer", TRUE, 0, 0, 0, 0, RES_FIRE, VULN_COLD, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K|L }, /* 4 */ { "centaur", TRUE, 0, 0, OFF_FAST, 0, RES_BASH, VULN_MENTAL, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K|Z }, /* 5 */ { "satyr", TRUE, 0, AFF_INFRARED|AFF_DETECT_INVIS|AFF_DARK_VISION, 0, 0, RES_CHARM|RES_POISON, VULN_IRON, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K|W }, /* 6 */ { "gargoyle", TRUE, 0, AFF_FLYING|AFF_DETECT_EVIL, 0, 0, RES_HOLY, VULN_SILVER, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K|P }, /* 7 */ { "elf", TRUE, 0, AFF_INFRARED, 0, 0, RES_CHARM, VULN_IRON, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K }, /* 8 */ { "dwarf", TRUE, 0, AFF_INFRARED, 0, 0, RES_MAGIC|RES_POISON|RES_DISEASE, VULN_DROWNING, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K }, /* 9 */ { "giant", TRUE, 0, 0, 0, 0, RES_FIRE|RES_COLD, VULN_MENTAL|VULN_LIGHTNING, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K }, /* 10 */ { "bat", FALSE, 0, AFF_FLYING|AFF_DARK_VISION, OFF_DODGE|OFF_FAST, 0, 0, VULN_LIGHT, A|G|W, A|C|D|E|F|H|J|K|P }, /* 11 */ { "bear", FALSE, 0, 0, OFF_CRUSH|OFF_DISARM|OFF_BERSERK, 0, RES_BASH|RES_COLD, 0, A|G|V, A|B|C|D|E|F|H|J|K|U|V }, /* 12 */ { "cat", FALSE, 0, AFF_DARK_VISION, OFF_FAST|OFF_DODGE, 0, 0, 0, A|G|V, A|C|D|E|F|H|J|K|Q|U|V }, /* 13 */ { "centipede", FALSE, 0, AFF_DARK_VISION, 0, 0, RES_PIERCE|RES_COLD, VULN_BASH }, /* 14 */ { "dog", FALSE, 0, 0, OFF_FAST, 0, 0, 0, A|G|V, A|C|D|E|F|H|J|K|U|V }, /* 15 */ { "doll", FALSE, 0, 0, 0, IMM_MAGIC, RES_BASH|RES_LIGHT, VULN_SLASH|VULN_FIRE|VULN_ACID|VULN_LIGHTNING|VULN_ENERGY, E|J|M|cc, A|B|C|G|H|K }, /* 16 */ { "fido", FALSE, 0, 0, OFF_DODGE|ASSIST_RACE, 0, 0, VULN_MAGIC, B|G|V, A|C|D|E|F|H|J|K|Q|V }, /* 17 */ { "fox", FALSE, 0, AFF_DARK_VISION, OFF_FAST|OFF_DODGE, 0, 0, 0, A|G|V, A|C|D|E|F|H|J|K|Q|V }, /* 18 */ { "goblin", FALSE, 0, AFF_INFRARED, 0, 0, RES_DISEASE, VULN_MAGIC, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K }, /* 19 */ { "hobgoblin", FALSE, 0, AFF_INFRARED, 0, 0, RES_DISEASE|RES_POISON, 0 }, /* 20 */ { "kobold", FALSE, 0, AFF_INFRARED, 0, 0, RES_POISON, VULN_MAGIC, A|B|H|M|V, A|B|C|D|E|F|G|H|I|J|K|Q }, /* 21 */ { "lizard", FALSE, 0, 0, 0, 0, RES_POISON, VULN_COLD, A|G|X|cc, A|C|D|E|F|H|K|Q|V }, /* 22 */ { "modron", FALSE, 0, AFF_INFRARED, ASSIST_RACE|ASSIST_ALIGN, IMM_CHARM|IMM_DISEASE|IMM_MENTAL|IMM_HOLY|IMM_NEGATIVE, RES_FIRE|RES_COLD|RES_ACID, 0, H, A|B|C|G|H|J|K }, /* 23 */ { "orc", FALSE, 0, AFF_INFRARED, 0, 0, RES_DISEASE, VULN_LIGHT, A|H|M|V, A|B|C|D|E|F|G|H|I|J|K }, /* 24 */ { "pig", FALSE, 0, 0, 0, 0, 0, 0, A|G|V, A|C|D|E|F|H|J|K }, /* 25 */ { "rabbit", FALSE, 0, 0, OFF_DODGE|OFF_FAST, 0, 0, 0, A|G|V, A|C|D|E|F|H|J|K }, /* 26 */ { "school monster", FALSE, ACT_NOALIGN, 0, 0, IMM_CHARM|IMM_SUMMON, 0, VULN_MAGIC, A|M|V, A|B|C|D|E|F|H|J|K|Q|U }, /* 27 */ { "snake", FALSE, 0, 0, 0, 0, RES_POISON, VULN_COLD, A|G|R|X|Y|cc, A|D|E|F|K|L|Q|V|X }, /* 28 */ { "song bird", FALSE, 0, AFF_FLYING, OFF_FAST|OFF_DODGE, 0, 0, 0, A|G|W, A|C|D|E|F|H|K|P }, /* 29 */ { "troll", FALSE, 0, AFF_REGENERATION|AFF_INFRARED|AFF_DETECT_HIDDEN, OFF_BERSERK, 0, RES_CHARM|RES_BASH, VULN_FIRE|VULN_ACID, B|M|V, A|B|C|D|E|F|G|H|I|J|K|U|V }, /* 30 */ { "water fowl", FALSE, 0, AFF_SWIM|AFF_FLYING, 0, 0, RES_DROWNING, 0, A|G|W, A|C|D|E|F|H|K|P }, /* 31 */ { "wolf", FALSE, 0, AFF_DARK_VISION, OFF_FAST|OFF_DODGE, 0, 0, 0, A|G|V, A|C|D|E|F|J|K|Q|V }, /* 32 */ { "wyvern", FALSE, 0, AFF_FLYING|AFF_DETECT_INVIS|AFF_DETECT_HIDDEN, OFF_BASH|OFF_FAST|OFF_DODGE, IMM_POISON, 0, VULN_LIGHT, B|Z|cc, A|C|D|E|F|H|J|K|Q|V|X }, /* 33 */ { "undead", FALSE, ACT_UNDEAD, AFF_CURSE|AFF_PROTECTG, OFF_FADE, IMM_CHARM|IMM_POISON|IMM_MENTAL|IMM_DISEASE|IMM_DROWNING, 0, VULN_FIRE|VULN_HOLY, D|I, A|B|C|G|H|I }, /* 34 */ { "demon", FALSE, 0, AFF_PROTECTG|AFF_DARK_VISION|AFF_REGENERATION, OFF_BACKSTAB|OFF_DODGE|OFF_TAIL|ASSIST_RACE, IMM_DISEASE, RES_CHARM, VULN_HOLY|VULN_MITHRIL, B|H|M, A|B|C|D|E|F|G|H|I|J|K|L|Q|U|V|W }, /* 35 */ { "avatar", FALSE, 0, AFF_PROTECTE|AFF_SANCTUARY, OFF_PARRY|ASSIST_ALIGN|ASSIST_RACE, IMM_HOLY, RES_DISEASE|RES_CHARM, VULN_NEGATIVE, C|H|M, A|B|C|D|E|F|G|H|I|J|K|P }, { NULL, 0, 0, 0, 0, 0, 0 } }; /* for a balanced race, all bonuses and penalties should add to 0 */ const struct pc_race_type pc_race_table [] = { { "null race", "", 0, { 100, 100, 100, 100 }, { "" },0,0, { 13, 13, 13, 13, 13 }, { 18, 18, 18, 18, 18 }, 0 }, /* { "race name", short name, points, { class multipliers }, { bonus skills }, recall, healer, { base stats }, { max stats }, size }, */ { "human", "Human", 0, { 100,100,100,100,100,100,100}, { "" }, 2093, 2096, { 0, 0, 0, 0, 0 }, { 20, 20, 20, 20, 20 }, SIZE_MEDIUM }, { "azer", "Azer ", 15, {110,160,160,110,130,130,110}, { "meditation", "fast healing"}, 2093, 2096, { 2, 0, -2, -2, 2}, {22, 20, 18, 18, 22} , SIZE_MEDIUM }, { "centaur", "Ctaur", 15, {150,140,140,100,140,140,100 }, { "bash", "dodge" }, 2093, 2096, { 2, 0, 0, -4, 2}, { 22, 20, 20, 16, 22 }, SIZE_LARGE }, { "satyr", "Satyr", 15, { 150,150,100,150,150,150,150 }, { "sneak", "hide", "beguiling" }, 2093, 2096, { 0, -3, -1, 4, 0}, { 20, 17, 19, 24, 20}, SIZE_MEDIUM }, { "gargoyle", "Grgyl", 10, { 140, 100, 170, 120,120,120,135 }, { "meditation", "benedictions" }, 2093, 2096, { 1, -2, 4, -3, 0 }, { 21, 18, 24, 17, 20 }, SIZE_LARGE }, { "elf", " Elf ", 5, { 100,125,100,120,110,110,95 }, { "sneak", "hide" }, 2093, 2096, { -1, 1, 0, 2, -2 }, { 16, 20, 18, 21, 15 },SIZE_MEDIUM }, { "dwarf", "Dwarf", 8, { 150, 100, 125, 100,120,120,115 }, { "berserk" }, 2093, 2096, { 1, -1, 1, -3, 2 }, { 20, 16, 19, 14, 21 },SIZE_MEDIUM }, { "giant", "Giant", 6, { 200, 150, 150, 100,200,200,175 }, { "bash", "fast healing" }, 2093, 2096, { 3, -2, 0, -2, 1 }, { 22, 15, 18, 15, 20 }, SIZE_HUGE } }; /* class list is as follows: mage: Traditional Magic-User avenger: Priests of Aecindo & Lukhan warrior: Traditional Warrior thief: Traditional Thief chaosmage: Mages who went a bit too far monk: A warrior who fights with wit & skin defiler: Priests of Thuahamin & Roqmin */ /* * Class table. */ const struct class_type class_table [MAX_CLASS] = { { "mage", "Mag", STAT_INT, OBJ_VNUM_SCHOOL_DAGGER, { 1, 1 }, 65, 18, 6, 6, 8, TRUE }, /* replace cleric with good cleric (avenger) */ { "avenger", "Ave", STAT_WIS, OBJ_VNUM_SCHOOL_MACE, { 1, 1 }, 65, 18, 2, 7, 10, TRUE }, { "thief", "Thi", STAT_DEX, OBJ_VNUM_SCHOOL_DAGGER, { 1, 1 }, 65, 18, -4, 8, 13, FALSE }, { "warrior", "War", STAT_STR, OBJ_VNUM_SCHOOL_SWORD, { 1, 1 }, 65, 17, -11, 11, 15, FALSE }, { "chaosmage", "Cha", STAT_INT, OBJ_VNUM_SCHOOL_DAGGER, { 1, 1 }, 65, 19, 7, 6, 8, TRUE }, { "monk", "Mon", STAT_CON, OBJ_VNUM_SCHOOL_SWORD, { 1, 1 }, 65, 18, 3, 6, 9, TRUE }, { "defiler", "Def", STAT_WIS, OBJ_VNUM_SCHOOL_MACE, { 1, 1 }, 65, 18, 2, 7, 10, TRUE } }; /* * Titles. */ char * const title_table [MAX_CLASS][MAX_LEVEL+1][2] = { { { "Man", "Woman" }, { "Apprentice of Magic", "Apprentice of Magic" }, { "Spell Student", "Spell Student" }, { "Scholar of Magic", "Scholar of Magic" }, { "Delver in Spells", "Delveress in Spells" }, { "Medium of Magic", "Medium of Magic" }, { "Scribe of Magic", "Scribess of Magic" }, { "Seer", "Seeress" }, { "Sage", "Sage" }, { "Illusionist", "Illusionist" }, { "Abjurer", "Abjuress" }, { "Invoker", "Invoker" }, { "Enchanter", "Enchantress" }, { "Conjurer", "Conjuress" }, { "Magician", "Witch" }, { "Creator", "Creator" }, { "Savant", "Savant" }, { "Magus", "Craftess" }, { "Wizard", "Wizard" }, { "Warlock", "War Witch" }, { "Sorcerer", "Sorceress" }, { "Elder Sorcerer", "Elder Sorceress" }, { "Grand Sorcerer", "Grand Sorceress" }, { "Great Sorcerer", "Great Sorceress" }, { "Golem Maker", "Golem Maker" }, { "Greater Golem Maker", "Greater Golem Maker" }, { "Maker of Stones", "Maker of Stones", }, { "Maker of Potions", "Maker of Potions", }, { "Maker of Scrolls", "Maker of Scrolls", }, { "Maker of Wands", "Maker of Wands", }, { "Maker of Staves", "Maker of Staves", }, { "Demon Summoner", "Demon Summoner" }, { "Greater Demon Summoner", "Greater Demon Summoner" }, { "Dragon Charmer", "Dragon Charmer" }, { "Greater Dragon Charmer", "Greater Dragon Charmer" }, { "Master of all Magic", "Master of all Magic" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Mage Hero", "Mage Heroine" }, { "Avatar of Magic", "Avatar of Magic" }, { "Angel of Magic", "Angel of Magic" }, { "Demigod of Magic", "Demigoddess of Magic" }, { "Immortal of Magic", "Immortal of Magic" }, { "God of Magic", "Goddess of Magic" }, { "Deity of Magic", "Deity of Magic" }, { "Supremity of Magic", "Supremity of Magic" }, { "Creator", "Creator" }, { "Implementor", "Implementress" } }, { { "Man", "Woman" }, { "Believer", "Believer" }, { "Attendant", "Attendant" }, { "Acolyte", "Acolyte" }, { "Novice", "Novice" }, { "Missionary", "Missionary" }, { "Adept", "Adept" }, { "Deacon", "Deaconess" }, { "Vicar", "Vicaress" }, { "Priest", "Priestess" }, { "Minister", "Lady Minister" }, { "Canon", "Canon" }, { "Levite", "Levitess" }, { "Curate", "Curess" }, { "Monk", "Nun" }, { "Healer", "Healess" }, { "Chaplain", "Chaplain" }, { "Expositor", "Expositress" }, { "Bishop", "Bishop" }, { "Arch Bishop", "Arch Lady of the Church" }, { "Patriarch", "Matriarch" }, { "Elder Patriarch", "Elder Matriarch" }, { "Grand Patriarch", "Grand Matriarch" }, { "Great Patriarch", "Great Matriarch" }, { "Demon Killer", "Demon Killer" }, { "Greater Demon Killer", "Greater Demon Killer" }, { "Cardinal of the Sea", "Cardinal of the Sea" }, { "Cardinal of the Earth", "Cardinal of the Earth" }, { "Cardinal of the Air", "Cardinal of the Air" }, { "Cardinal of the Ether", "Cardinal of the Ether" }, { "Cardinal of the Heavens", "Cardinal of the Heavens" }, { "Avatar of an Immortal", "Avatar of an Immortal" }, { "Avatar of a Deity", "Avatar of a Deity" }, { "Avatar of a Supremity", "Avatar of a Supremity" }, { "Avatar of an Implementor", "Avatar of an Implementor" }, { "Master of all Divinity", "Mistress of all Divinity" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Master Cleric", "Master Cleric" }, { "Holy Hero", "Holy Heroine" }, { "Holy Avatar", "Holy Avatar" }, { "Angel", "Angel" }, { "Demigod", "Demigoddess", }, { "Immortal", "Immortal" }, { "God", "Goddess" }, { "Deity", "Deity" }, { "Supreme Master", "Supreme Mistress" }, { "Creator", "Creator" }, { "Implementor", "Implementress" } }, { { "Man", "Woman" }, { "Pilferer", "Pilferess" }, { "Footpad", "Footpad" }, { "Filcher", "Filcheress" }, { "Pick-Pocket", "Pick-Pocket" }, { "Sneak", "Sneak" }, { "Pincher", "Pincheress" }, { "Cut-Purse", "Cut-Purse" }, { "Snatcher", "Snatcheress" }, { "Sharper", "Sharpress" }, { "Rogue", "Rogue" }, { "Robber", "Robber" }, { "Magsman", "Magswoman" }, { "Highwayman", "Highwaywoman" }, { "Burglar", "Burglaress" }, { "Thief", "Thief" }, { "Knifer", "Knifer" }, { "Quick-Blade", "Quick-Blade" }, { "Killer", "Murderess" }, { "Brigand", "Brigand" }, { "Cut-Throat", "Cut-Throat" }, { "Spy", "Spy" }, { "Grand Spy", "Grand Spy" }, { "Master Spy", "Master Spy" }, { "Assassin", "Assassin" }, { "Greater Assassin", "Greater Assassin" }, { "Master of Vision", "Mistress of Vision" }, { "Master of Hearing", "Mistress of Hearing" }, { "Master of Smell", "Mistress of Smell" }, { "Master of Taste", "Mistress of Taste" }, { "Master of Touch", "Mistress of Touch" }, { "Crime Lord", "Crime Mistress" }, { "Infamous Crime Lord", "Infamous Crime Mistress" }, { "Greater Crime Lord", "Greater Crime Mistress" }, { "Master Crime Lord", "Master Crime Mistress" }, { "Godfather", "Godmother" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Master Thief", "Master Thief" }, { "Assassin Hero", "Assassin Heroine" }, { "Avatar of Death", "Avatar of Death", }, { "Angel of Death", "Angel of Death" }, { "Demigod of Assassins", "Demigoddess of Assassins" }, { "Immortal Assasin", "Immortal Assassin" }, { "God of Assassins", "God of Assassins", }, { "Deity of Assassins", "Deity of Assassins" }, { "Supreme Master", "Supreme Mistress" }, { "Creator", "Creator" }, { "Implementor", "Implementress" } }, { { "Man", "Woman" }, { "Swordpupil", "Swordpupil" }, { "Recruit", "Recruit" }, { "Sentry", "Sentress" }, { "Fighter", "Fighter" }, { "Soldier", "Soldier" }, { "Warrior", "Warrior" }, { "Veteran", "Veteran" }, { "Swordsman", "Swordswoman" }, { "Fencer", "Fenceress" }, { "Combatant", "Combatess" }, { "Hero", "Heroine" }, { "Myrmidon", "Myrmidon" }, { "Swashbuckler", "Swashbuckleress" }, { "Mercenary", "Mercenaress" }, { "Swordmaster", "Swordmistress" }, { "Lieutenant", "Lieutenant" }, { "Champion", "Lady Champion" }, { "Dragoon", "Lady Dragoon" }, { "Cavalier", "Lady Cavalier" }, { "Knight", "Lady Knight" }, { "Grand Knight", "Grand Knight" }, { "Master Knight", "Master Knight" }, { "Paladin", "Paladin" }, { "Grand Paladin", "Grand Paladin" }, { "Demon Slayer", "Demon Slayer" }, { "Greater Demon Slayer", "Greater Demon Slayer" }, { "Dragon Slayer", "Dragon Slayer" }, { "Greater Dragon Slayer", "Greater Dragon Slayer" }, { "Underlord", "Underlord" }, { "Overlord", "Overlord" }, { "Baron of Thunder", "Baroness of Thunder" }, { "Baron of Storms", "Baroness of Storms" }, { "Baron of Tornadoes", "Baroness of Tornadoes" }, { "Baron of Hurricanes", "Baroness of Hurricanes" }, { "Baron of Meteors", "Baroness of Meteors" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Master Warrior", "Master Warrior" }, { "Knight Hero", "Knight Heroine" }, { "Avatar of War", "Avatar of War" }, { "Angel of War", "Angel of War" }, { "Demigod of War", "Demigoddess of War" }, { "Immortal Warlord", "Immortal Warlord" }, { "God of War", "God of War" }, { "Deity of War", "Deity of War" }, { "Supreme Master of War", "Supreme Mistress of War" }, { "Creator", "Creator" }, { "Implementor", "Implementress" } }, { { "Man", "Woman" }, { "Apprentice of Magic", "Apprentice of Magic" }, { "Spell Student", "Spell Student" }, { "Scholar of Magic", "Scholar of Magic" }, { "Delver in Spells", "Delveress in Spells" }, { "Medium of Magic", "Medium of Magic" }, { "Scribe of Magic", "Scribess of Magic" }, { "Seer", "Seeress" }, { "Sage", "Sage" }, { "Illusionist", "Illusionist" }, { "Abjurer", "Abjuress" }, { "Invoker", "Invoker" }, { "Enchanter", "Enchantress" }, { "Conjurer", "Conjuress" }, { "Magician", "Witch" }, { "Creator", "Creator" }, { "Savant", "Savant" }, { "Magus", "Craftess" }, { "Wizard", "Wizard" }, { "Warlock", "War Witch" }, { "Sorcerer", "Sorceress" }, { "Elder Sorcerer", "Elder Sorceress" }, { "Grand Sorcerer", "Grand Sorceress" }, { "Great Sorcerer", "Great Sorceress" }, { "Golem Maker", "Golem Maker" }, { "Greater Golem Maker", "Greater Golem Maker" }, { "Maker of Stones", "Maker of Stones", }, { "Maker of Potions", "Maker of Potions", }, { "Maker of Scrolls", "Maker of Scrolls", }, { "Maker of Wands", "Maker of Wands", }, { "Maker of Staves", "Maker of Staves", }, { "Demon Summoner", "Demon Summoner" }, { "Greater Demon Summoner", "Greater Demon Summoner" }, { "Dragon Charmer", "Dragon Charmer" }, { "Greater Dragon Charmer", "Greater Dragon Charmer" }, { "Master of all Magic", "Master of all Magic" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Mage Hero", "Mage Heroine" }, { "Avatar of Magic", "Avatar of Magic" }, { "Angel of Magic", "Angel of Magic" }, { "Demigod of Magic", "Demigoddess of Magic" }, { "Immortal of Magic", "Immortal of Magic" }, { "God of Magic", "Goddess of Magic" }, { "Deity of Magic", "Deity of Magic" }, { "Supremity of Magic", "Supremity of Magic" }, { "Creator", "Creator" }, { "Implementor", "Implementress" } }, { { "Man", "Woman" }, { "Apprentice of Magic", "Apprentice of Magic" }, { "Spell Student", "Spell Student" }, { "Scholar of Magic", "Scholar of Magic" }, { "Delver in Spells", "Delveress in Spells" }, { "Medium of Magic", "Medium of Magic" }, { "Scribe of Magic", "Scribess of Magic" }, { "Seer", "Seeress" }, { "Sage", "Sage" }, { "Illusionist", "Illusionist" }, { "Abjurer", "Abjuress" }, { "Invoker", "Invoker" }, { "Enchanter", "Enchantress" }, { "Conjurer", "Conjuress" }, { "Magician", "Witch" }, { "Creator", "Creator" }, { "Savant", "Savant" }, { "Magus", "Craftess" }, { "Wizard", "Wizard" }, { "Warlock", "War Witch" }, { "Sorcerer", "Sorceress" }, { "Elder Sorcerer", "Elder Sorceress" }, { "Grand Sorcerer", "Grand Sorceress" }, { "Great Sorcerer", "Great Sorceress" }, { "Golem Maker", "Golem Maker" }, { "Greater Golem Maker", "Greater Golem Maker" }, { "Maker of Stones", "Maker of Stones", }, { "Maker of Potions", "Maker of Potions", }, { "Maker of Scrolls", "Maker of Scrolls", }, { "Maker of Wands", "Maker of Wands", }, { "Maker of Staves", "Maker of Staves", }, { "Demon Summoner", "Demon Summoner" }, { "Greater Demon Summoner", "Greater Demon Summoner" }, { "Dragon Charmer", "Dragon Charmer" }, { "Greater Dragon Charmer", "Greater Dragon Charmer" }, { "Master of all Magic", "Master of all Magic" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Master Mage", "Master Mage" }, { "Mage Hero", "Mage Heroine" }, { "Avatar of Magic", "Avatar of Magic" }, { "Angel of Magic", "Angel of Magic" }, { "Demigod of Magic", "Demigoddess of Magic" }, { "Immortal of Magic", "Immortal of Magic" }, { "God of Magic", "Goddess of Magic" }, { "Deity of Magic", "Deity of Magic" }, { "Supremity of Magic", "Supremity of Magic" }, { "Creator", "Creator" }, { "Implementor", "Implementress" } } }; /* * Attribute bonus tables. */ const struct str_app_type str_app [26] = { { -5, -4, 0, 0 }, /* 0 */ { -5, -4, 3, 1 }, /* 1 */ { -3, -2, 3, 2 }, { -3, -1, 10, 3 }, /* 3 */ { -2, -1, 25, 4 }, { -2, -1, 55, 5 }, /* 5 */ { -1, 0, 80, 6 }, { -1, 0, 90, 7 }, { 0, 0, 100, 8 }, { 0, 0, 100, 9 }, { 0, 0, 115, 10 }, /* 10 */ { 0, 0, 115, 11 }, { 0, 0, 130, 12 }, { 0, 0, 130, 13 }, /* 13 */ { 0, 1, 140, 14 }, { 1, 1, 150, 15 }, /* 15 */ { 1, 2, 165, 16 }, { 2, 3, 180, 22 }, { 2, 3, 200, 25 }, /* 18 */ { 3, 4, 225, 30 }, { 3, 5, 250, 35 }, /* 20 */ { 4, 6, 300, 40 }, { 4, 6, 350, 45 }, { 5, 7, 400, 50 }, { 5, 8, 450, 55 }, { 6, 9, 500, 60 } /* 25 */ }; const struct int_app_type int_app [26] = { { 3 }, /* 0 */ { 5 }, /* 1 */ { 7 }, { 8 }, /* 3 */ { 9 }, { 10 }, /* 5 */ { 11 }, { 12 }, { 13 }, { 15 }, { 17 }, /* 10 */ { 19 }, { 22 }, { 25 }, { 28 }, { 31 }, /* 15 */ { 34 }, { 37 }, { 40 }, /* 18 */ { 44 }, { 49 }, /* 20 */ { 55 }, { 60 }, { 70 }, { 80 }, { 85 } /* 25 */ }; const struct wis_app_type wis_app [26] = { { 0 }, /* 0 */ { 0 }, /* 1 */ { 0 }, { 0 }, /* 3 */ { 0 }, { 1 }, /* 5 */ { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, /* 10 */ { 1 }, { 1 }, { 1 }, { 1 }, { 2 }, /* 15 */ { 2 }, { 2 }, { 3 }, /* 18 */ { 3 }, { 3 }, /* 20 */ { 3 }, { 4 }, { 4 }, { 4 }, { 5 } /* 25 */ }; const struct dex_app_type dex_app [26] = { { 60 }, /* 0 */ { 50 }, /* 1 */ { 50 }, { 40 }, { 30 }, { 20 }, /* 5 */ { 10 }, { 0 }, { 0 }, { 0 }, { 0 }, /* 10 */ { 0 }, { 0 }, { 0 }, { 0 }, { - 10 }, /* 15 */ { - 15 }, { - 20 }, { - 30 }, { - 40 }, { - 50 }, /* 20 */ { - 60 }, { - 75 }, { - 90 }, { -105 }, { -120 } /* 25 */ }; const struct con_app_type con_app [26] = { { -4, 20 }, /* 0 */ { -3, 25 }, /* 1 */ { -2, 30 }, { -2, 35 }, /* 3 */ { -1, 40 }, { -1, 45 }, /* 5 */ { -1, 50 }, { 0, 55 }, { 0, 60 }, { 0, 65 }, { 0, 70 }, /* 10 */ { 0, 75 }, { 0, 80 }, { 0, 85 }, { 0, 88 }, { 1, 90 }, /* 15 */ { 2, 95 }, { 2, 97 }, { 3, 99 }, /* 18 */ { 3, 99 }, { 4, 99 }, /* 20 */ { 4, 99 }, { 5, 99 }, { 6, 99 }, { 7, 99 }, { 8, 99 } /* 25 */ }; /* * Liquid properties. * Used in world.obj. */ const struct liq_type liq_table [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 */ }; /* * The skill and spell table. * Slot numbers must never be changed as they appear in #OBJECTS sections. * Class Rating is now unused, as is level requirements. * Level req's are in savefiles, rating is totally unused. */ #define SLOT(n) n struct skill_type skill_table [MAX_SKILL] = { /* * Magic spells. */ { "reserved", { 99, 99, 99, 99, 99, 99 }, { 99, 99, 99, 99, 99, 99}, 0, TAR_IGNORE, POS_STANDING, NULL, SLOT( 0), 0, 0, "", "", "" }, { "armor", { 93,1,93,93,93,93 }, { 1, 1,0,0,1,1}, spell_armor, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT( 1), 5, 12, "", "You feel less protected.", "" }, { "teleport", { 93,10,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_teleport, TAR_CHAR_SELF, POS_FIGHTING, NULL, SLOT( 2), 35, 12, "", "!Teleport!", "" }, { "bless", { 93,5,93,93,93,93 }, { 1, 1,0,0,1,1}, spell_bless, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT( 3), 5, 12, "", "You feel less righteous.", "" }, { "blindness", { 93,8,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_blindness, TAR_CHAR_OFFENSIVE, POS_FIGHTING, &gsn_blindness, SLOT( 4), 5, 12, "", "You can see again.", "" }, { "burning hands", { 5,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_burning_hands, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT( 5), 15, 12, "burning hands", "!Burning Hands!", "" }, { "call lightning", { 93,18,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_call_lightning, TAR_IGNORE, POS_FIGHTING, NULL, SLOT( 6), 15, 12, "lightning bolt", "!Call Lightning!", "" }, { "charm person", { 15,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_charm_person, TAR_CHAR_OFFENSIVE, POS_STANDING, &gsn_charm_person, SLOT( 7), 5, 12, "", "You feel more self-confident.", "" }, { "chill touch", { 93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_chill_touch, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT( 8), 15, 12, "chilling touch", "You feel less cold.", "" }, { "colour spray", { 10,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_colour_spray, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(10), 15, 12, "colour spray", "!Colour Spray!", "" }, { "control weather", { 93,19,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_control_weather, TAR_IGNORE, POS_STANDING, NULL, SLOT(11), 25, 12, "", "!Control Weather!", "" }, { "create food", { 6,4,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_create_food, TAR_IGNORE, POS_STANDING, NULL, SLOT(12), 5, 12, "", "!Create Food!", "" }, { "create water", { 93,3,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_create_water, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(13), 5, 12, "", "!Create Water!", "" }, { "cure blindness", {93,5,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cure_blindness, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(14), 5, 12, "", "!Cure Blindness!", "" }, { "cure critical", { 93,13,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cure_critical, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(15), 20, 12, "", "!Cure Critical!", "" }, { "cure light", { 93,1,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cure_light, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(16), 10, 12, "", "!Cure Light!", "" }, { "curse", { 93,16,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_curse, TAR_CHAR_OFFENSIVE, POS_FIGHTING, &gsn_curse, SLOT(17), 20, 12, "curse", "The curse wears off.", "" }, { "detect evil", { 93,4,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_detect_evil, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(18), 5, 12, "", "The red in your vision disappears.", "" }, { "detect invis", {5,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_detect_invis, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(19), 5, 12, "", "You no longer see invisible objects.", "" }, { "detect magic", { 4,12,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_detect_magic, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(20), 5, 12, "", "The detect magic wears off.", "" }, { "detect poison", { 93,10,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_detect_poison, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(21), 5, 12, "", "!Detect Poison!", "" }, { "dispel evil", { 93,15,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_dispel_evil, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(22), 15, 12, "dispel evil", "!Dispel Evil!", "" }, { "earthquake", { 93,11,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_earthquake, TAR_IGNORE, POS_FIGHTING, NULL, SLOT(23), 15, 12, "earthquake", "!Earthquake!", "" }, { "enchant weapon", { 16,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_enchant_weapon, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(24), 100, 24, "", "!Enchant Weapon!", "" }, { "energy drain", { 93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_energy_drain, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(25), 35, 12, "energy drain", "!Energy Drain!", "" }, { "fireball", { 19,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_fireball, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(26), 15, 12, "fireball", "!Fireball!", "" }, { "harm", {93,25,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_harm, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(27), 35, 12, "harm spell", "!Harm!", "" }, { "heal", {93,39,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_heal, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(28), 50, 12, "", "!Heal!", "" }, { "invis", {7,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_invis, TAR_CHAR_DEFENSIVE, POS_STANDING, &gsn_invis, SLOT(29), 5, 12, "", "You are no longer invisible.", "" }, { "lightning bolt", { 10,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_lightning_bolt, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(30), 15, 12, "lightning bolt", "!Lightning Bolt!", "" }, { "locate object", { 11,33,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_locate_object, TAR_IGNORE, POS_STANDING, NULL, SLOT(31), 20, 4, "", "!Locate Object!", "" }, { "magic missile", { 1,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_magic_missile, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(32), 15, 12, "magic missile", "!Magic Missile!", "" }, { "poison", { 14,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_poison, TAR_CHAR_OFFENSIVE, POS_FIGHTING, &gsn_poison, SLOT(33), 10, 12, "poison", "You feel less sick.", "" }, { "protection evil", { 93,9,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_protection_evil, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(34), 5, 12, "", "You feel less protected from evil.", "" }, { "remove curse", { 93,18,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_remove_curse, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(35), 5, 12, "", "!Remove Curse!", "" }, { "sanctuary", { 93,30,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_sanctuary, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(36), 75, 12, "", "The white aura around your body fades.", "alabaster" }, { "sleep", { 11,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_sleep, TAR_CHAR_OFFENSIVE, POS_STANDING, &gsn_sleep, SLOT(38), 15, 12, "", "You feel less tired.", "" }, { "giant strength", {9,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_giant_strength, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(39), 20, 12, "", "You feel weaker.", "" }, { "summon", { 21,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_summon, TAR_IGNORE, POS_STANDING, NULL, SLOT(40), 50, 12, "", "!Summon!", "" }, { "ventriloquate", { 2,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_ventriloquate, TAR_IGNORE, POS_STANDING, NULL, SLOT(41), 5, 12, "", "!Ventriloquate!", "" }, { "word of recall", { 93,12,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_word_of_recall, TAR_CHAR_SELF, POS_RESTING, NULL, SLOT(42), 5, 12, "", "!Word of Recall!", "" }, { "cure poison", { 93,14,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cure_poison, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(43), 5, 12, "", "!Cure Poison!", "" }, { "detect hidden", { 9,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_detect_hidden, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(44), 5, 12, "", "You feel less aware of your suroundings.", "" }, { "identify", {12,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_identify, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(52), 12, 24, "", "!Identify!", "" }, { "shocking grasp", { 93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_shocking_grasp, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(53), 15, 12, "shocking grasp", "!Shocking Grasp!", "" }, { "fly", { 8,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_fly, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(56), 10, 18, "", "You slowly float to the ground.", "" }, { "continual light", {5,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_continual_light, TAR_IGNORE, POS_STANDING, NULL, SLOT(57), 7, 12, "", "!Continual Light!", "" }, { "know alignment", { 93,18,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_know_alignment, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(58), 9, 12, "", "!Know Alignment!", "" }, { "dispel magic", { 12,20,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(59), 15, 12, "", "!Dispel Magic!", "" }, { "cure serious", { 93,9,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cure_serious, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(61), 15, 12, "", "!Cure Serious!", "" }, { "cause light", { 93,3,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cause_light, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(62), 15, 12, "spell", "!Cause Light!", "" }, { "cause critical", { 93,14,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cause_critical, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(63), 20, 12, "spell", "!Cause Critical!", "" }, { "cause serious", { 93,7,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cause_serious, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(64), 17, 12, "spell", "!Cause Serious!", "" }, { "flamestrike", {93,16,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_flamestrike, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(65), 20, 12, "flamestrike", "!Flamestrike!", "" }, { "stone skin", { 23,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_stone_skin, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(66), 12, 18, "", "Your skin feels soft again.", "" }, { "shield", { 17,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_shield, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(67), 12, 18, "", "Your force shield shimmers then fades away.", "" }, { "weaken", { 93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_weaken, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(68), 20, 12, "spell", "You feel stronger.", "" }, { "mass invis", { 38,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_mass_invis, TAR_IGNORE, POS_STANDING, &gsn_mass_invis, SLOT(69), 20, 24, "", "!Mass Invis!", "" }, { "acid blast", { 25,93,93,93,93,93 }, { 1,1,0,0,1,1}, spell_acid_blast, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(70), 20, 12, "acid blast", "!Acid Blast!", "" }, { "faerie fire", { 4,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_faerie_fire, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(72), 5, 12, "faerie fire", "The pink aura around you fades away.", "" }, { "faerie fog", { 9,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_faerie_fog, TAR_IGNORE, POS_STANDING, NULL, SLOT(73), 12, 12, "faerie fog", "!Faerie Fog!", "" }, { "pass door", { 23,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_pass_door, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(74), 20, 12, "", "You feel solid again.", "" }, { "infravision", {93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_infravision, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(77), 5, 18, "", "You no longer see in the dark.", "" }, { "create spring", { 93,17,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_create_spring, TAR_IGNORE, POS_STANDING, NULL, SLOT(80), 20, 12, "", "!Create Spring!", "" }, { "refresh", { 93,6,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_refresh, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(81), 12, 18, "refresh", "!Refresh!", "" }, { "change sex", { 93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_change_sex, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(82), 15, 12, "", "Your body feels familiar again.", "" }, { "gate", {23,33,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_gate, TAR_IGNORE, POS_FIGHTING, NULL, SLOT(83), 80, 12, "", "!Gate!", "obsidian" }, /* * Dragon breath */ { "acid breath", { 44,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_acid_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(200), 0, 4, "blast of acid", "!Acid Breath!", "" }, { "fire breath", { 41,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_fire_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(201), 0, 4, "blast of flame", "!Fire Breath!", "" }, { "frost breath", { 46,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_frost_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(202), 0, 4, "blast of frost", "!Frost Breath!", "" }, { "gas breath", { 45,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_gas_breath, TAR_IGNORE, POS_FIGHTING, NULL, SLOT(203), 0, 4, "blast of gas", "!Gas Breath!", "" }, { "lightning breath", { 47,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_lightning_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(204), 0, 4, "blast of lightning", "!Lightning Breath!", "" }, { "chaos", {93,93,93,93,93,93,93}, {1,1,1,1,1,1,1}, spell_chaos, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(205), 30, 16, "chaos", "!Chaos!", "" }, { "create buffet", { 93,13,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_create_buffet, TAR_IGNORE, POS_STANDING, NULL, SLOT(230), 50, 12, "", "!Create Buffet!", "" }, { "general purpose", { 93,93,93,93,93,93 }, { 1, 1, 1, 1, 1, 1 }, spell_general_purpose, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(401), 0, 12, "general purpose ammo", "!General Purpose Ammo!", "" }, { "high explosive", { 93,93,93,93,93,93 }, { 0, 0, 0, 0,0,0 }, spell_high_explosive, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(402), 0, 12, "high explosive ammo", "!High Explosive Ammo!", "" }, { "mind meld", {93,93,93,93,93,93 }, {2,1,1,1,1,1}, spell_mind_meld, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(403), 35, 24, "mental blast", "Your feel your head clearing.", "" }, { "animate dead", {27,93,93,93,93,93 }, { 2, 1, 0,0,1,1}, spell_animate, TAR_IGNORE, POS_STANDING, NULL, SLOT(404), 100, 15, "", "!Animate Dead!", "" }, { "soul blade", {93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_soul_blade, TAR_IGNORE, POS_STANDING, NULL, SLOT(405), 35, 15, "", "!Soul Blade!", "" }, { "minor creation", {6,93,93,93,93,93}, {1,1,0,0,1,1}, spell_minor_creation, TAR_IGNORE, POS_STANDING, NULL, SLOT(406), 15, 20, "", "!Minor Creation!", "" }, { "psi twister", {93,93,93,93,93,93}, {1,1,0,0,1,1}, spell_psi_twister, TAR_IGNORE, POS_FIGHTING, NULL, SLOT(407), 25, 20, "psi twister", "!Psi Twister!", "" }, { "exorcism", { 93,26,93,93,93,93 }, {1,1,0,0,1,1}, spell_exorcism, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(408), 20, 12, "angels", "!Exorcism!", "" }, { "youth", {53,49,53,53,53,53}, {1,1,0,0,1,1}, spell_youth, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(409), 200, 24, "", "!YOUTH!", "" }, { "age", {53,49,53,53,53,53}, {1,1,0,0,1,1}, spell_age, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(410), 200, 12, "", "!AGE!", "" }, { "chain lightning", {29,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_chain_lightning, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(500), 25, 12, "lightning", "!Chain Lightning!", "" }, { "cure disease", { 93,11,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cure_disease, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(501), 20, 12, "", "!Cure Disease!", "" }, { "haste", {18,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_haste, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(502), 30, 12, "", "You feel yourself slow down.", "" }, { "plague", { 93,25,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_plague, TAR_CHAR_OFFENSIVE, POS_FIGHTING, &gsn_plague, SLOT(503), 20, 12, "sickness", "Your sores vanish.", "" }, { "frenzy", { 34,29,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_frenzy, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(504), 30, 24, "", "Your rage ebbs.", "" }, { "demonfire", { 93,26,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_demonfire, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(505), 20, 12, "torments", "!Demonfire!", "" }, { "holy word", {93,33,93,93,93,93 }, { 2, 2, 2, 2,1,1}, spell_holy_word, TAR_IGNORE, POS_FIGHTING, NULL, SLOT(506), 200, 24, "divine wrath", "!Holy Word!", "" }, { "cancellation", { 13,15,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_cancellation, TAR_CHAR_DEFENSIVE, POS_FIGHTING, NULL, SLOT(507), 20, 12, "", "!cancellation!", "" }, { "mass healing", { 93,45,93,93,93,93 }, { 2, 2, 0, 0,1,1}, spell_mass_healing, TAR_IGNORE, POS_STANDING, NULL, SLOT(508), 100, 36, "", "!Mass Healing!", "" }, { "calm", { 93,16,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_calm, TAR_IGNORE, POS_FIGHTING, NULL, SLOT(509), 30, 12, "", "You have lost your peace of mind.", "" }, { "enchant armor", { 15,27,93,93,93,93 }, { 1, 1, 0,0,1,1 }, spell_enchant_armor, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(510), 100, 24, "", "!Enchant Armor!", "" }, { "brand", { 38,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_brand, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(511), 100, 8, "", "!brand!", "" }, { "negate alignment", {93,30,93,93,93,93 }, {1,1,0,0,1,1}, spell_negate_alignment, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(512), 50, 12, "", "!negate alignment", "" }, { "mask self", { 16,53,53,53,53,53 }, {1,1,0,0,1,1}, spell_mask_self, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(513), 100, 8, "", "You return to normal form.", "" }, { "absorb magic", { 24,53,53,53,53,53 }, {1,1,0,0,1,1}, spell_absorb_magic, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(514), 50, 4, "", "You can no longer absorb magic.", "" }, { "psychic anchor", {53,19,53,53,53,53 }, {1,1,0,0,1,1}, spell_psychic_anchor, TAR_IGNORE, POS_STANDING, NULL, SLOT(515), 30, 4, "", "!psychic anchor!", "" }, { "fear", {14,53,53,53,53,53 }, {1,1,0,0,1,1}, spell_fear, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(516), 20, 8, "", "You no longer feel so scared.", "" }, { "protection good", { 93,9,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_protection_good, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(517), 5, 12, "", "You feel less protected from good.", "" }, { "detect good", { 93,4,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_detect_good, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(518), 5, 12, "", "The green in your vision disappears.", "" }, { "dispel good", { 93,16,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_dispel_good, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(519), 15, 12, "dispel good", "!Dispel Good!", "" }, { "regeneration", { 93,14,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_regeneration, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(520), 30, 8, "", "You are no longer regenerating.", "" }, { "fire shield", {93,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_fire_shield, TAR_CHAR_SELF, POS_STANDING, NULL, SLOT(521), 10, 8, "fire shield", "Your fire shield fades away.", "" }, { "portal", { 45,93,93,93,93,93 }, { 1, 1, 0, 0, 1, 1}, spell_portal, TAR_IGNORE, POS_STANDING, NULL, SLOT(522), 100, 16, "portal", "!portal!", "" }, { "remove invis", { 28,93,93,93,93,93 }, { 1, 1, 0,0,1,1}, spell_remove_invis, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(523), 40, 12, "", "!Remove Invis!", "" }, { "vocalize", { 21,53,53,53,53,53 }, { 1, 1, 0,0,1, 1}, spell_vocalize, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(524), 50, 12, "", "You must speak to cast spells again.", "" }, { "entropy", { 93,93,93,93,93,93 }, {1, 1, 1, 1, 1, 1}, spell_entropy, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(525), 30, 18, "entropy", "!Entropy!", "" }, { "remove fear", { 53,6,93,93,93,93 }, { 1, 1,0,0,1, 1}, spell_remove_fear, TAR_CHAR_DEFENSIVE, POS_STANDING, NULL, SLOT(526), 5, 12, "", "!Remove Fear!", "" }, { "mute", { 23,53,53,53,53,53 }, { 1, 1,0,0,1, 1}, spell_mute, TAR_CHAR_OFFENSIVE, POS_FIGHTING, NULL, SLOT(527), 50, 12, "", "You can speak again.", "" }, /* classes are: mage Avenger thief warrior chaosmage monk Defiler */ /* combat and weapons skills */ { "axe", {93,93,93,3,93,93 }, { 0, 0, 0, 4,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_axe, SLOT( 0), 0, 0, "", "!Axe!", "" }, { "dagger", {1,93,1,2,93,93 }, { 2, 0, 2, 0,0,2}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_dagger, SLOT( 0), 0, 0, "", "!Dagger!", "" }, { "flail", {93,1,93,6,93,93 }, { 0, 3, 0, 4,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_flail, SLOT( 0), 0, 0, "", "!Flail!", "" }, { "mace", {93,1,93,6,93,93 }, { 0, 2, 0, 3,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_mace, SLOT( 0), 0, 0, "", "!Mace!", "" }, { "polearm", { 93,93,93,8,93,93 }, { 0, 0, 0, 4,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_polearm, SLOT( 0), 0, 0, "", "!Polearm!", "" }, { "shield block", { 93,22,11,5,93,93 }, { 0, 4, 6, 2,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_shield_block, SLOT(0), 0, 0, "", "!Shield!", "" }, { "spear", {93,93,93,4,93,93 }, { 0, 0, 0, 3,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_spear, SLOT( 0), 0, 0, "", "!Spear!", "" }, { "sword", { 93,93,93,1,93,93 }, { 0, 0, 0, 2,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_sword, SLOT( 0), 0, 0, "", "!sword!", "" }, { "whip", { 93,93,3,7,93,93 }, { 0, 0, 5, 4,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_whip, SLOT( 0), 0, 0, "", "!Whip!", "" }, { "backstab", { 93,93,10,93,93,93 }, { 0, 0, 5, 0,0,0}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_backstab, SLOT( 0), 0, 24, "backstab", "!Backstab!", "" }, { "circle", {93,93,25,93,93,93 }, { 0, 0, 8, 0,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_circle, SLOT( 0), 0, 24, "circle", "!Circle!", "" }, { "bash", {93,93,93,13,93,93 }, { 0, 0, 0, 4,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_bash, SLOT( 0), 0, 24, "bash", "!Bash!", "" }, { "berserk", {93,93,93,15,93,93 }, { 0, 0, 0, 5,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_berserk, SLOT( 0), 0, 24, "", "You feel your pulse slow down.", "" }, { "dual", {93,93,93,21,93,93 }, { 0, 0, 0, 5,0,0 }, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_dual, SLOT(0), 0, 4, "", "!dual!", "" }, { "dirt kicking", { 35,93,7,9,93,93 }, { 4, 0, 2, 4,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_dirt, SLOT( 0), 0, 24, "kicked dirt", "You rub the dirt out of your eyes.", "" }, { "disarm", { 93,93,16,16,93,93 }, { 0, 0, 6, 4,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_disarm, SLOT( 0), 0, 24, "", "!Disarm!", "" }, { "dodge", { 20,18,10,15,93,93 }, { 6, 8, 4, 6,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_dodge, SLOT( 0), 0, 0, "", "!Dodge!", "" }, { "enhanced damage", { 93,93,23,9,93,93 }, { 0, 0, 5, 3,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_enhanced_damage, SLOT( 0), 0, 0, "", "!Enhanced Damage!", "" }, { "ultra damage", { 93,93,93,35,93,93 }, { 0, 0, 0, 5,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_ultra_damage, SLOT( 0), 0, 0, "", "!Ultra Damage!", "" }, { "envenom", { 93,93,18,93,93,93 }, { 0, 0, 4, 0,0,0 }, spell_null, TAR_IGNORE, POS_RESTING, &gsn_envenom, SLOT(0), 0, 36, "", "!Envenom!", "" }, { "hand to hand", { 93,93,17,8,93,93 }, { 0, 0, 6, 4,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_hand_to_hand, SLOT( 0), 0, 0, "", "!Hand to Hand!", "" }, { "kick", { 93,93,15,3,93,93 }, { 0, 0, 6, 3,1,1}, spell_null, TAR_CHAR_OFFENSIVE, POS_FIGHTING, &gsn_kick, SLOT( 0), 0, 12, "kick", "!Kick!", "" }, { "parry", { 93,93,32,8,93,93 }, { 0, 0, 6, 4,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_parry, SLOT( 0), 0, 0, "", "!Parry!", "" }, { "rotate", {93,93,93,18,93,93 }, { 0, 0, 0,4,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_rotate, SLOT(0), 0, 8, "", "!Rotate!", "" }, { "rescue", { 93,28,93,6,93,93 }, { 0, 6, 0, 4,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_rescue, SLOT( 0), 0, 12, "", "!Rescue!", "" }, { "trip", { 93,93,5,4,93,93 }, { 0, 0, 4, 8,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_trip, SLOT( 0), 0, 24, "trip", "!Trip!", "" }, { "second attack", { 55,23,18,11,93,93 }, { 10, 8, 5, 3,1,1}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_second_attack, SLOT( 0), 0, 0, "", "!Second Attack!", "" }, { "sharpen", { 93,93,93,24,93,93 }, {0, 0, 0, 4,0,0 }, spell_null, TAR_OBJ_INV, POS_STANDING, &gsn_sharpen, SLOT(0), 0, 16, "", "!Sharpen!", "" }, { "third attack", { 93,93,93,20,93,93 }, { 0, 0,0 , 4,0,0}, spell_null, TAR_IGNORE, POS_FIGHTING, &gsn_third_attack, SLOT( 0), 0, 0, "", "!Third Attack!", "" }, /* non-combat skills */ { "fast healing", { 93,19,14,13,93,93 }, { 0, 5, 6, 4,1,1}, spell_null, TAR_IGNORE, POS_SLEEPING, &gsn_fast_healing, SLOT( 0), 0, 0, "", "!Fast Healing!", "" }, { "haggle", { 21,19,18,22,93,93 }, { 5, 8, 3, 6,1,1}, spell_null, TAR_IGNORE, POS_RESTING, &gsn_haggle, SLOT( 0), 0, 0, "", "!Haggle!", "" }, { "hide", { 93,93,4,93,93,93 }, { 0, 0, 4, 0,0,0}, spell_null, TAR_IGNORE, POS_RESTING, &gsn_hide, SLOT( 0), 0, 12, "", "!Hide!", "" }, { "lore", { 15,17,27,93,93,93 }, { 6, 6, 4, 0,0,0}, spell_null, TAR_IGNORE, POS_RESTING, &gsn_lore, SLOT( 0), 0, 18, "", "!Lore!", "" }, { "meditation", {15,9,93,93,93,93 }, { 5, 5, 0, 0,1,1}, spell_null, TAR_IGNORE, POS_SLEEPING, &gsn_meditation, SLOT( 0), 0, 0, "", "Meditation", "" }, { "peek", { 93,93,19,93,93,93 }, { 0, 0, 3, 0,0,0}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_peek, SLOT( 0), 0, 0, "", "!Peek!", "" }, { "pick lock", { 93,93,12,93,93,93 }, { 0, 0, 4, 0,0,0}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_pick_lock, SLOT( 0), 0, 12, "", "!Pick!", "" }, { "recruit", {93,93,93,93,93,93}, {1,1,1,1,1,1}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_recruit, SLOT( 0), 0, 0, "", "!Recruit!", "" }, { "sneak", { 93,93,8,93,93,93 }, { 0, 0, 4, 0,0,0}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_sneak, SLOT( 0), 0, 12, "", "You no longer feel stealthy.", "" }, { "steal", { 93,93,2,93,93,93 }, { 0, 0, 2, 0,0,0}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_steal, SLOT( 0), 0, 24, "", "!Steal!", "" }, { "scrolls", { 5,5,7,10,5,5 }, { 1, 2, 4, 7,1,2}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_scrolls, SLOT( 0), 0, 24, "", "!Scrolls!", "" }, { "staves", { 5,5,7,10,5,5 }, { 2,3,8,0,2,3}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_staves, SLOT( 0), 0, 12, "", "!Staves!", "" }, { "wands", { 5,5,7,10,5,5 }, { 2, 3, 0, 0,1,1}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_wands, SLOT( 0), 0, 12, "", "!Wands!", "" }, { "recall", { 1, 1, 1, 1,1,1 }, { 2, 2, 2,2,2,2}, spell_null, TAR_IGNORE, POS_STANDING, &gsn_recall, SLOT( 0), 0, 12, "", "!Recall!", "" } };