/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik Strfeldt, 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. *
**************************************************************************/
/***************************************************************************
* ROM 2.4 is copyright 1993-1998 Russ Taylor *
* ROM has been brought to you by the ROM consortium *
* Russ Taylor (rtaylor@hypercube.org) *
* Gabrielle Taylor (gtaylor@hypercube.org) *
* Brian Moore (zump@rom.org) *
* By using this code, you have agreed to follow the terms of the *
* ROM license, in the file Rom24/doc/rom.license *
**************************************************************************/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <time.h>
#include "merc.h"
#include "magic.h"
#include "interp.h"
/* item type list */
const struct item_type item_table[] = {
{ITEM_LIGHT, "light"},
{ITEM_SCROLL, "scroll"},
{ITEM_WAND, "wand"},
{ITEM_STAFF, "staff"},
{ITEM_WEAPON, "weapon"},
{ITEM_TREASURE, "treasure"},
{ITEM_ARMOR, "armor"},
{ITEM_POTION, "potion"},
{ITEM_CLOTHING, "clothing"},
{ITEM_FURNITURE, "furniture"},
{ITEM_TRASH, "trash"},
{ITEM_CONTAINER, "container"},
{ITEM_DRINK_CON, "drink"},
{ITEM_KEY, "key"},
{ITEM_FOOD, "food"},
{ITEM_MONEY, "money"},
{ITEM_BOAT, "boat"},
{ITEM_CORPSE_NPC, "npc_corpse"},
{ITEM_CORPSE_PC, "pc_corpse"},
{ITEM_FOUNTAIN, "fountain"},
{ITEM_PILL, "pill"},
{ITEM_PROTECT, "protect"},
{ITEM_MAP, "map"},
{ITEM_PORTAL, "portal"},
{ITEM_WARP_STONE, "warp_stone"},
{ITEM_ROOM_KEY, "room_key"},
{ITEM_GEM, "gem"},
{ITEM_JEWELRY, "jewelry"},
{ITEM_JUKEBOX, "jukebox"},
{0, NULL}
};
/* weapon selection table */
const struct weapon_type weapon_table[] = {
{"sword", OBJ_VNUM_SCHOOL_SWORD, WEAPON_SWORD, &gsn_sword},
{"mace", OBJ_VNUM_SCHOOL_MACE, WEAPON_MACE, &gsn_mace},
{"dagger", OBJ_VNUM_SCHOOL_DAGGER, WEAPON_DAGGER, &gsn_dagger},
{"axe", OBJ_VNUM_SCHOOL_AXE, WEAPON_AXE, &gsn_axe},
{"staff", OBJ_VNUM_SCHOOL_STAFF, WEAPON_SPEAR, &gsn_spear},
{"flail", OBJ_VNUM_SCHOOL_FLAIL, WEAPON_FLAIL, &gsn_flail},
{"whip", OBJ_VNUM_SCHOOL_WHIP, WEAPON_WHIP, &gsn_whip},
{"polearm", OBJ_VNUM_SCHOOL_POLEARM, WEAPON_POLEARM, &gsn_polearm},
{NULL, 0, 0, NULL}
};
/* wiznet table and prototype for future flag setting */
const struct wiznet_type wiznet_table[] = {
{"on", WIZ_ON, IM},
{"prefix", WIZ_PREFIX, IM},
{"ticks", WIZ_TICKS, IM},
{"logins", WIZ_LOGINS, IM},
{"sites", WIZ_SITES, L4},
{"links", WIZ_LINKS, L7},
{"newbies", WIZ_NEWBIE, IM},
{"spam", WIZ_SPAM, L5},
{"deaths", WIZ_DEATHS, IM},
{"resets", WIZ_RESETS, L4},
{"mobdeaths", WIZ_MOBDEATHS, L4},
{"flags", WIZ_FLAGS, L5},
{"penalties", WIZ_PENALTIES, L5},
{"saccing", WIZ_SACCING, L5},
{"levels", WIZ_LEVELS, IM},
{"load", WIZ_LOAD, L2},
{"restore", WIZ_RESTORE, L2},
{"snoops", WIZ_SNOOPS, L2},
{"switches", WIZ_SWITCHES, L2},
{"secure", WIZ_SECURE, L1},
{NULL, 0, 0}
};
const struct god_type god_table[]=
{
{ "" },
{ "Paladine" },
{ "Astinus" },
{ "Chemosh" },
{ "Hiddukel" },
{ "Nuitari" },
{ "Sargonnas" },
{ "Zeboim" },
{ "Branchala" },
{ "Habbakuk" },
{ "Kiri-Jolith" },
{ "Majere" },
{ "Mishakal" },
{ "Solinari" },
{ "Chislev" },
{ "Gilean" },
{ "Lunitari" },
{ "Reorx" },
{ "Shinare" },
{ "Sirrion" },
{ "Zivilyn" },
{ "Takhisis" },
{ "" }
};
/* attack table -- not very organized :( */
const struct attack_type attack_table[MAX_DAMAGE_MESSAGE] = {
{"none", "hit", -1}, /* 0 */
{"slice", "slice", DAM_SLASH},
{"stab", "stab", DAM_PIERCE},
{"slash", "slash", DAM_SLASH},
{"whip", "whip", DAM_SLASH},
{"claw", "claw", DAM_SLASH}, /* 5 */
{"blast", "blast", DAM_BASH},
{"pound", "pound", DAM_BASH},
{"crush", "crush", DAM_BASH},
{"grep", "grep", DAM_SLASH},
{"bite", "bite", DAM_PIERCE}, /* 10 */
{"pierce", "pierce", DAM_PIERCE},
{"suction", "suction", DAM_BASH},
{"beating", "beating", DAM_BASH},
{"digestion", "digestion", DAM_ACID},
{"charge", "charge", DAM_BASH}, /* 15 */
{"slap", "slap", DAM_BASH},
{"punch", "punch", DAM_BASH},
{"wrath", "wrath", DAM_ENERGY},
{"magic", "magic", DAM_ENERGY},
{"divine", "divine power", DAM_HOLY}, /* 20 */
{"cleave", "cleave", DAM_SLASH},
{"scratch", "scratch", DAM_PIERCE},
{"peck", "peck", DAM_PIERCE},
{"peckb", "peck", DAM_BASH},
{"chop", "chop", DAM_SLASH}, /* 25 */
{"sting", "sting", DAM_PIERCE},
{"smash", "smash", DAM_BASH},
{"shbite", "shocking bite", DAM_LIGHTNING},
{"flbite", "flaming bite", DAM_FIRE},
{"frbite", "freezing bite", DAM_COLD}, /* 30 */
{"acbite", "acidic bite", DAM_ACID},
{"chomp", "chomp", DAM_PIERCE},
{"drain", "life drain", DAM_NEGATIVE},
{"thrust", "thrust", DAM_PIERCE},
{"slime", "slime", DAM_ACID},
{"shock", "shock", DAM_LIGHTNING},
{"thwack", "thwack", DAM_BASH},
{"flame", "flame", DAM_FIRE},
{"chill", "chill", DAM_COLD},
{NULL, NULL, 0}
};
/* race table */
const struct race_type race_table[] = {
/*
{
name, pc_race?,
act bits, aff_by bits, off bits,
imm, res, vuln,
form, parts
},
*/
{"unique", FALSE, 0, 0, 0, 0, 0, 0, 0, 0},
/* 1 */
{
"human", TRUE,
0, 0, 0,
0, 0, 0,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 2 */
{
"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},
/* 3 */
{
"dwarf", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 4 */
{
"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},
/* 5 */
{
"draconian", TRUE,
0, 0, 0,
0, RES_FIRE | RES_COLD, RES_WEAPON | VULN_MAGIC,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 6 */
{
"gnome", TRUE,
0, 0, 0,
0, IMM_MENTAL, VULN_WEAPON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 7 */
{
"hobbit", TRUE,
0, 0, 0,
0, VULN_BASH, VULN_POISON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 8 */
{
"kender", TRUE,
0, 0, 0,
0, VULN_BASH, VULN_POISON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 9 */
{
"troll", TRUE,
0, 0, 0,
0, VULN_FIRE, RES_WEAPON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 10 */
{
"pixie", TRUE,
0, 0, 0,
0, VULN_BASH, VULN_POISON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
{ /* 11 */
"half-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
},
/* 12 */
{
"half-giant", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 13 */
{
"half-orc", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 14 */
{
"duergar", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 15 */
{
"minotaur", 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},
/* 16 */
{
"centaur", 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},
/* 17 */
{
"drow", 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},
/* 18 */
{
"storm giant", TRUE,
0, AFF_FLYING, 0,
0, RES_LIGHTNING, VULN_MENTAL|VULN_COLD|VULN_FIRE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 19 */
"cloud giant", TRUE,
0, AFF_FLYING, 0,
0, RES_WEAPON, VULN_MENTAL|VULN_LIGHTNING,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 20 */
"fire giant", TRUE,
0, 0, 0,
0, RES_FIRE, VULN_MENTAL|VULN_LIGHTNING|VULN_COLD,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 21 */
"frost giant", TRUE,
0, 0, 0,
0, RES_COLD, VULN_MENTAL|VULN_LIGHTNING|VULN_FIRE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 22 */
"cyclops", TRUE,
0, 0, 0,
0, 0, VULN_MENTAL|VULN_MAGIC,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 23 */
"hydra", TRUE,
0, 0, 0,
0, RES_BASH, VULN_MENTAL|VULN_MAGIC,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 24 */
"rockseer", TRUE,
0, AFF_INFRARED|AFF_SNEAK|AFF_PASS_DOOR, 0,
0, RES_CHARM, VULN_WOOD,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 25 */
"svirfnebli", TRUE,
0, AFF_INFRARED, 0,
0, RES_MAGIC|RES_POISON|RES_DISEASE, VULN_BASH,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 26 */
"arial", TRUE,
0, AFF_FLYING, 0,
0, 0, 0,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 27 */
"felar", TRUE,
0, AFF_INFRARED, OFF_TAIL,
0, RES_LIGHT|RES_COLD, VULN_FIRE|VULN_DROWNING,
A|H|M|V, A|C|D|E|F|H|J|K|Q|U|V
},
{ /* 28 */
"githyanki", TRUE,
0, AFF_INFRARED, 0,
0, 0, 0,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 29 */
"satyr", TRUE,
0, AFF_INFRARED, 0,
0, RES_WOOD|RES_DISEASE, 0,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 30 */
"black dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_ACID, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 31 */
"blue dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_LIGHTNING,
VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 32 */
"green dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_POISON, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 33 */
"red dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_FIRE, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 34 */
"white dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_COLD, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 35 */
"brass dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_FIRE, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 36 */
"gold dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_FIRE|RES_POISON,
VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 37 */
"silver dragon",TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_COLD, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 38 */
"bronze dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_LIGHTNING,
VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 39 */
"copper dragon",TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_ACID, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{
"bat", FALSE,
0, AFF_FLYING | AFF_DARK_VISION, OFF_DODGE | OFF_FAST,
0, 0, VULN_LIGHT,
A | G | V, A | C | D | E | F | H | J | K | P},
{
"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},
{
"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},
{
"centipede", FALSE,
0, AFF_DARK_VISION, 0,
0, RES_PIERCE | RES_COLD, VULN_BASH,
A | B | G | O, A | C | K},
{
"dog", FALSE,
0, 0, OFF_FAST,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K | U | V},
{
"doll", FALSE,
0, 0, 0,
IMM_COLD | IMM_POISON | IMM_HOLY | IMM_NEGATIVE | IMM_MENTAL |
IMM_DISEASE | IMM_DROWNING, RES_BASH | RES_LIGHT,
VULN_SLASH | VULN_FIRE | VULN_ACID | VULN_LIGHTNING | VULN_ENERGY,
E | J | M | cc, A | B | C | G | H | K},
{"dragon", FALSE,
0, AFF_INFRARED | AFF_FLYING, 0,
0, RES_FIRE | RES_BASH | RES_CHARM,
VULN_PIERCE | VULN_COLD,
A | H | Z, A | C | D | E | F | G | H | I | J | K | P | Q | U | V | X},
{
"fido", FALSE,
0, 0, OFF_DODGE | ASSIST_RACE,
0, 0, VULN_MAGIC,
A | B | G | V, A | C | D | E | F | H | J | K | Q | V},
{
"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},
{
"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},
{
"hobgoblin", FALSE,
0, AFF_INFRARED, 0,
0, RES_DISEASE | RES_POISON, 0,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K | Y},
{
"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},
{
"lizard", FALSE,
0, 0, 0,
0, RES_POISON, VULN_COLD,
A | G | X | cc, A | C | D | E | F | H | K | Q | V},
{
"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},
{
"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},
{
"pig", FALSE,
0, 0, 0,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K},
{
"rabbit", FALSE,
0, 0, OFF_DODGE | OFF_FAST,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K},
{
"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},
{
"snake", FALSE,
0, 0, 0,
0, RES_POISON, VULN_COLD,
A | G | X | Y | cc, A | D | E | F | K | L | Q | V | X},
{
"song bird", FALSE,
0, AFF_FLYING, OFF_FAST | OFF_DODGE,
0, 0, 0,
A | G | W, A | C | D | E | F | H | K | P},
{
"troll", FALSE,
0, AFF_REGENERATION | AFF_INFRARED | AFF_DETECT_HIDDEN,
OFF_BERSERK,
0, RES_CHARM | RES_BASH, VULN_FIRE | VULN_ACID,
A | B | H | M | V, A | B | C | D | E | F | G | H | I | J | K | U | V},
{
"water fowl", FALSE,
0, AFF_SWIM | AFF_FLYING, 0,
0, RES_DROWNING, 0,
A | G | W, A | C | D | E | F | H | K | P},
{
"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},
{
"wyvern", FALSE,
0, AFF_FLYING | AFF_DETECT_INVIS | AFF_DETECT_HIDDEN,
OFF_BASH | OFF_FAST | OFF_DODGE,
IMM_POISON, 0, VULN_LIGHT,
A | B | G | Z, A | C | D | E | F | H | J | K | Q | V | X},
{
"unique", FALSE,
0, 0, 0,
0, 0, 0,
0, 0},
{
NULL, 0, 0, 0, 0, 0, 0}
};
const struct pc_race_type pc_race_table[] = {
{"null race", "", 0, {100, 100, 100, 100},
70, 140, {""}, {13, 13, 13, 13, 13}, {18, 18, 18, 18, 18}, 0},
/*
{
"race name", short name, points, { class multipliers },
"height", "weight", { bonus skills },
{ base stats }, { max stats }, size
},
*/
{
"human", "Human ", 0, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 140, {""},
{13, 13, 13, 13, 13}, {18, 18, 18, 18, 18}, SIZE_MEDIUM},
{
"elf", "Elf ", 20, {100, 125, 100, 120, 120, 120, 100, 120, 125, 100},
72, 130, {"sneak", "hide"},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"dwarf", "Dwarf ", 20, {150, 100, 125, 100, 100, 100, 150, 100, 100, 130},
40, 170, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_MEDIUM},
{
"giant", "Giant ", 25, {200, 150, 150, 105, 120, 120, 200, 120, 150, 175},
120, 250, {"bash", "fast healing"},
{16, 11, 13, 11, 14}, {22, 15, 18, 15, 20}, SIZE_LARGE},
{
"draconian", "Draconian", 20, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
80, 170, {""},
{16, 12, 13, 11, 16}, {22, 15, 18, 15, 20}, SIZE_MEDIUM},
{
"gnome", "Gnome ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
35, 80, {""},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"hobbit", "Hobbit ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
40, 150, {""},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"kender", "Kender ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
35, 75, {""},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"troll", "Troll ", 25, {200, 150, 150, 105, 100, 100, 200, 100, 150, 175},
95, 220, {"bash", "fast healing"},
{16, 11, 13, 11, 14}, {23, 15, 18, 15, 22}, SIZE_LARGE},
{
"pixie", "Pixie ", 10, {100, 125, 100, 120, 120, 120, 100, 120, 125, 100},
6, 1, {"sneak", "hide"},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"half-elf", "Half-elf ", 20, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 140, {""},
{13, 13, 13, 13, 13}, {18, 18, 18, 18, 18}, SIZE_MEDIUM},
{
"half-giant", "Hlf-Giant", 25, {125, 100, 125, 100, 100, 100, 125, 100, 100, 125},
80, 220, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_LARGE},
{
"half-orc", "Half-Orc ", 20, {150, 100, 125, 100, 100, 100, 150, 100, 100, 125},
70, 150, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_MEDIUM},
{
"duergar", "Duergar ", 20, {150, 100, 125, 100, 100, 100, 150, 100, 100, 130},
40, 160, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_MEDIUM},
{
"minotaur", "Minotaur ", 20, {200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
85, 230, {"bash", "fast healing"},
{16, 11, 13, 11, 14}, {22, 15, 18, 15, 20}, SIZE_LARGE},
{
"centaur", "Centaur ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
85, 260, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_LARGE},
{
"drow", "Dark Elf ", 20, {100, 125, 100, 120, 120, 120, 100, 120, 125, 100},
80, 120, {"sneak", "hide"},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_MEDIUM},
{
"storm giant", "StormGia ",30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"cloud giant", "CloudGia ", 30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"fire giant", "FireGia ",30 ,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"frost giant", "FrostGia ",30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"cyclops", "Cyclops ",30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"hydra", "Hydra ",20,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"rockseer","Rockseer ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150, { "wand" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"svirfnebli", "Svirf ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
50, 120, { "lore", "identify" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_SMALL},
{
"arial", "Arial ",10,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150, { "" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"felar", "Felar ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150,{ "hand to hand" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"githyanki", "Githy ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150,{ "sword" ,"dagger"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"satyr","Satyr ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150, { "camouflage" ,"ambush", "steal" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"black dragon","BlaDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"blue dragon","BluDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"green dragon","GReDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"red dragon","RedDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"white dragon","WhiteDrag",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"brass dragon","BrassDrag",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"gold dragon","GoldDrag ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"silver dragon","SilverDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"bronze dragon","BronzeDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"copper dragon","CopperDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT}
};
// struct class_type
// {
// char * name; /* the full name of the class */
// char who_name [4]; /* Three-letter name for 'who' */
// sh_int attr_prime; /* Prime attribute */
// sh_int weapon; /* First weapon */
// sh_int guild[MAX_GUILD]; /* Vnum of guild rooms */
// sh_int skill_adept; /* Maximum skill level */
// sh_int thac0_00; /* Thac0 for level 0 */
// sh_int thac0_32; /* Thac0 for level 32 */
// sh_int hp_min; /* Min hp gained on leveling */
// sh_int hp_max; /* Max hp gained on leveling */
// bool fMana; /* Class gains mana on level */
// char * base_group; /* base skills gained */
// char * default_group; /* default skills gained */
// };
/*
* Class table.
*/
const struct class_type class_table[MAX_CLASS] = {
{
"mage", "Mag", STAT_INT, OBJ_VNUM_SCHOOL_DAGGER,
{3018, 9618}, 75, 20, 6, 6, 8, TRUE,
"mage basics", "mage default"},
{
"cleric", "Cle", STAT_WIS, OBJ_VNUM_SCHOOL_MACE,
{3003, 9619}, 75, 20, 2, 7, 10, TRUE,
"cleric basics", "cleric default"},
{
"ninja", "Nin", STAT_DEX, OBJ_VNUM_SCHOOL_DAGGER,
{3028, 9639}, 75, 20, -4, 8, 13, FALSE,
"thief basics", "ninja default"},
{
"samurai", "Sam", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
{3022, 9633}, 75, 20, -10, 11, 15, FALSE,
"warrior basics", "samurai default"},
{
"paladin", "Pal", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
{3022, 9633}, 80, 20, -10, 13, 16, TRUE,
"warrior basics", "paladin default"},
{
"antipaladin", "AP ", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
{3022, 9633}, 80, 20, -10, 13, 16, TRUE,
"warrior basics", "antipaladin default"},
{
"necromancer", "Nec", STAT_INT, OBJ_VNUM_SCHOOL_DAGGER,
{3018, 9618}, 75, 20, 6, 6, 8, TRUE,
"mage basics", "necromancer default"},
{
"ranger", "Rgr", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
{3022, 9633}, 75, 20, -10, 11, 15, FALSE,
"warrior basics", "ranger default"},
{
"monk", "Mon", STAT_STR, OBJ_VNUM_SCHOOL_SWORD,
{3022, 9633}, 75, 20, -10, 11, 15, FALSE,
"cleric basics", "monk default"},
{
"assassin", "Asn", STAT_DEX, OBJ_VNUM_SCHOOL_DAGGER,
{3028, 9639}, 75, 20, -4, 8, 13, FALSE,
"thief basics", "assassin default"},
// char * name; /* the full name of the class */
// char who_name [4]; /* Three-letter name for 'who' */
// sh_int attr_prime; /* Prime attribute */
// sh_int weapon; /* First weapon */
// sh_int guild[MAX_GUILD]; /* Vnum of guild rooms */
// sh_int skill_adept; /* Maximum skill level */
// sh_int thac0_00; /* Thac0 for level 0 */
// sh_int thac0_32; /* Thac0 for level 32 */
// sh_int hp_min; /* Min hp gained on leveling */
// sh_int hp_max; /* Max hp gained on leveling */
// bool fMana; /* Class gains mana on level */
// char * base_group; /* base skills gained */
// char * default_group; /* default skills gained */
};
/*
* 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"},
{"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"},
{"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"},
{"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"},
{"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"}
},
};
/*
* Attribute bonus tables.
*/
const struct str_app_type str_app[26] = {
{-5, -4, 0, 0}, /* 0 */
{-5, -4, 3, 1}, /* 1 */
{-3, -2, 3, 2},
{-3, -1, 10, 3}, /* 3 */
{-2, -1, 25, 4},
{-2, -1, 55, 5}, /* 5 */
{-1, 0, 80, 6},
{-1, 0, 90, 7},
{0, 0, 100, 8},
{0, 0, 100, 9},
{0, 0, 115, 10}, /* 10 */
{0, 0, 115, 11},
{0, 0, 130, 12},
{0, 0, 130, 13}, /* 13 */
{0, 1, 140, 14},
{1, 1, 150, 15}, /* 15 */
{1, 2, 165, 16},
{2, 3, 180, 22},
{2, 3, 200, 25}, /* 18 */
{3, 4, 225, 30},
{3, 5, 250, 35}, /* 20 */
{4, 6, 300, 40},
{4, 6, 350, 45},
{5, 7, 400, 50},
{5, 8, 450, 55},
{6, 9, 500, 60} /* 25 */
};
const struct int_app_type int_app[26] = {
{3}, /* 0 */
{5}, /* 1 */
{7},
{8}, /* 3 */
{9},
{10}, /* 5 */
{11},
{12},
{13},
{15},
{17}, /* 10 */
{19},
{22},
{25},
{28},
{31}, /* 15 */
{34},
{37},
{40}, /* 18 */
{44},
{49}, /* 20 */
{55},
{60},
{70},
{80},
{85} /* 25 */
};
const struct wis_app_type wis_app[26] = {
{0}, /* 0 */
{0}, /* 1 */
{0},
{0}, /* 3 */
{0},
{1}, /* 5 */
{1},
{1},
{1},
{1},
{1}, /* 10 */
{1},
{1},
{1},
{1},
{2}, /* 15 */
{2},
{2},
{3}, /* 18 */
{3},
{3}, /* 20 */
{3},
{4},
{4},
{4},
{5} /* 25 */
};
const struct dex_app_type dex_app[26] = {
{60}, /* 0 */
{50}, /* 1 */
{50},
{40},
{30},
{20}, /* 5 */
{10},
{0},
{0},
{0},
{0}, /* 10 */
{0},
{0},
{0},
{0},
{-10}, /* 15 */
{-15},
{-20},
{-30},
{-40},
{-50}, /* 20 */
{-60},
{-75},
{-90},
{-105},
{-120} /* 25 */
};
const struct con_app_type con_app[26] = {
{-4, 20}, /* 0 */
{-3, 25}, /* 1 */
{-2, 30},
{-2, 35}, /* 3 */
{-1, 40},
{-1, 45}, /* 5 */
{-1, 50},
{0, 55},
{0, 60},
{0, 65},
{0, 70}, /* 10 */
{0, 75},
{0, 80},
{0, 85},
{0, 88},
{1, 90}, /* 15 */
{2, 95},
{2, 97},
{3, 99}, /* 18 */
{3, 99},
{4, 99}, /* 20 */
{4, 99},
{5, 99},
{6, 99},
{7, 99},
{8, 99} /* 25 */
};
/*
* Liquid properties.
* Used in world.obj.
*/
const struct liq_type liq_table[] = {
/* name color proof, full, thirst, food, ssize */
{"water", "clear", {0, 1, 10, 0, 16}},
{"beer", "amber", {12, 1, 8, 1, 12}},
{"red wine", "burgundy", {30, 1, 8, 1, 5}},
{"ale", "brown", {15, 1, 8, 1, 12}},
{"dark ale", "dark", {16, 1, 8, 1, 12}},
{"whisky", "golden", {120, 1, 5, 0, 2}},
{"lemonade", "pink", {0, 1, 9, 2, 12}},
{"firebreather", "boiling", {190, 0, 4, 0, 2}},
{"local specialty", "clear", {151, 1, 3, 0, 2}},
{"slime mold juice", "green", {0, 2, -8, 1, 2}},
{"milk", "white", {0, 2, 9, 3, 12}},
{"tea", "tan", {0, 1, 8, 0, 6}},
{"coffee", "black", {0, 1, 8, 0, 6}},
{"blood", "red", {0, 2, -1, 2, 6}},
{"salt water", "clear", {0, 1, -2, 0, 1}},
{"coke", "brown", {0, 2, 9, 2, 12}},
{"root beer", "brown", {0, 2, 9, 2, 12}},
{"elvish wine", "green", {35, 2, 8, 1, 5}},
{"white wine", "golden", {28, 1, 8, 1, 5}},
{"champagne", "golden", {32, 1, 8, 1, 5}},
{"mead", "honey-colored", {34, 2, 8, 2, 12}},
{"rose wine", "pink", {26, 1, 8, 1, 5}},
{"benedictine wine", "burgundy", {40, 1, 8, 1, 5}},
{"vodka", "clear", {130, 1, 5, 0, 2}},
{"cranberry juice", "red", {0, 1, 9, 2, 12}},
{"orange juice", "orange", {0, 2, 9, 3, 12}},
{"absinthe", "green", {200, 1, 4, 0, 2}},
{"brandy", "golden", {80, 1, 5, 0, 4}},
{"aquavit", "clear", {140, 1, 5, 0, 2}},
{"schnapps", "clear", {90, 1, 5, 0, 2}},
{"icewine", "purple", {50, 2, 6, 1, 5}},
{"amontillado", "burgundy", {35, 2, 8, 1, 5}},
{"sherry", "red", {38, 2, 7, 1, 5}},
{"framboise", "red", {50, 1, 7, 1, 5}},
{"rum", "amber", {151, 1, 4, 0, 2}},
{"cordial", "clear", {100, 1, 5, 0, 2}},
{NULL, NULL, {0, 0, 0, 0, 0}}
};
/*
* The skill and spell table.
* Slot numbers must never be changed as they appear in #OBJECTS sections.
*/
#define SLOT(n) n
const struct skill_type skill_table[MAX_SKILL] = {
/*
* Magic spells.
*/
// char * name; /* Name of skill */
// sh_int skill_level[MAX_CLASS]; /* Level needed by class */
// sh_int rating[MAX_CLASS]; /* How hard it is to learn */
// SPELL_FUN * spell_fun; /* Spell pointer (for spells) */
// sh_int target; /* Legal targets */
// sh_int minimum_position; /* Position for caster / user */
// sh_int * pgsn; /* Pointer to associated gsn */
// sh_int slot; /* Slot for #OBJECT loading */
// sh_int min_mana; /* Minimum mana used */
// sh_int beats; /* Waiting time after use */
// char * noun_damage; /* Damage message */
// char * msg_off; /* Wear off message */
// char * msg_obj; /* Wear off message for obects */
{
"reserved", {99, 99, 99, 99}, {99, 99, 99, 99},
0, TAR_IGNORE, POS_STANDING,
NULL, SLOT (0), 0, 0,
"", "", ""},
{
"4xexp", {50, 50, 50, 50, 50, 50, 50, 50, 50, 50 }, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_4xexp, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (75), 5, 0,
"", "You now advance slower.", ""},
{
"acid arrow", { 38, 60, 60, 60, 60, 60,52,60,60,60},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_acid_arrow, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(644), 20, 12,
"acid arrow", "!Acid Arrow!" },
{
"acid blast", {28, 101, 35, 32, 28, 25, 20, 42, 101, 35}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_acid_blast, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (70), 20, 12,
"acid blast", "!Acid Blast!"},
{
"animate dead", { 60, 60, 60, 60, 60, 60, 40, 60, 60, 60 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_animate_dead, TAR_OBJ_CHAR_OFF, POS_STANDING,
NULL, SLOT(581), 50, 12,
"", "You gain energy to animate new deads."},
{
"armor", {7, 2, 10, 5, 5, 5, 8, 5, 2, 10 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_armor, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (1), 5, 12,
"", "You feel less armored.", ""},
{
"bless", {101, 7, 101, 8, 10, 15, 60, 45, 10, 40}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_bless, TAR_OBJ_CHAR_DEF, POS_STANDING,
NULL, SLOT (3), 5, 12,
"", "You feel less righteous.",
"$p's holy aura fades."},
{
"blindness", {12, 8, 17, 15, 20, 10, 10, 20, 8, 15}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_blindness, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
&gsn_blindness, SLOT (4), 5, 12,
"", "You can see again.", ""},
{
"burning hands", {7, 101, 10, 9, 8, 7, 7, 10, 101, 7}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_burning_hands, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (5), 15, 12,
"burning hands", "!Burning Hands!", ""},
{
"call lightning", {26, 18, 31, 22, 20, 20, 25, 20, 16, 30}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_call_lightning, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT (6), 15, 12,
"lightning bolt", "!Call Lightning!", ""},
{"calm", {48, 16, 50, 20, 17, 23, 45, 20, 16, 45}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_calm, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT (509), 30, 12,
"", "You have lost your peace of mind.", ""},
{
"cancellation", {18, 26, 34, 34, 34, 34, 18, 34, 25, 34}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cancellation, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (507), 20, 12,
"" "!cancellation!", ""},
{
"cause critical", {101, 13, 101, 19, 16, 15, 101, 17, 12, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cause_critical, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (63), 20, 12,
"spell", "!Cause Critical!", ""},
{
"cause light", {101, 1, 101, 3, 3, 2, 101, 3, 1, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cause_light, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (62), 15, 12,
"spell", "!Cause Light!", ""},
{
"cause serious", {101, 7, 101, 10, 8, 8, 101, 9, 7, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cause_serious, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (64), 17, 12,
"spell", "!Cause Serious!", ""},
{
"chain lightning", {33, 101, 39, 36, 30, 30, 32, 30, 101, 35 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_chain_lightning, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (500), 25, 12,
"lightning", "!Chain Lightning!", ""},
{
"change sex", {101, 101, 101, 101, 101, 101, 101, 101, 101, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_change_sex, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (82), 15, 12,
"", "Your body feels familiar again.", ""},
{
"charm person", {20, 101, 25, 101, 50, 50, 25, 30, 101, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_charm_person, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_charm_person, SLOT (7), 5, 12,
"", "You feel more self-confident.", ""},
{
"chill touch", {4, 101, 6, 6, 5, 4, 4, 20, 101, 6}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_chill_touch, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (8), 15, 12,
"chilling touch", "You feel less cold.", ""},
{
"colour spray", {16, 101, 22, 20, 18, 18, 15, 17, 101, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_colour_spray, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (10), 15, 12,
"colour spray", "!Colour Spray!", ""},
{
"continual light", {6, 4, 6, 9, 9, 9, 5, 9, 4, 6}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_continual_light, TAR_IGNORE, POS_STANDING,
NULL, SLOT (57), 7, 12,
"", "!Continual Light!", ""},
{
"control weather", {15, 19, 28, 22, 22, 22, 15, 22, 19, 28}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_control_weather, TAR_IGNORE, POS_STANDING,
NULL, SLOT (11), 25, 12,
"", "!Control Weather!", ""},
{
"counter", { 101, 101, 20, 25, 20, 20, 101, 20, 101, 30 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_counter, SLOT( 0), 0, 0,
"counterattack", "!Counter!", ""
},
{
"create food", {10, 5, 11, 12, 10, 10, 10, 10, 5, 10}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_create_food, TAR_IGNORE, POS_STANDING,
NULL, SLOT (12), 5, 12,
"", "!Create Food!", ""},
{
"create rose", {16, 11, 10, 24, 24, 24, 15, 20, 11, 10}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_create_rose, TAR_IGNORE, POS_STANDING,
NULL, SLOT (511), 30, 12,
"", "!Create Rose!", ""},
{
"create spring", {14, 17, 23, 20, 15, 15, 12, 10, 17, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_create_spring, TAR_IGNORE, POS_STANDING,
NULL, SLOT (80), 20, 12,
"", "!Create Spring!", ""},
{
"create water", {8, 3, 12, 11, 11, 11, 8, 11, 3, 10}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_create_water, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (13), 5, 12,
"", "!Create Water!", ""},
{
"cure blindness", {101, 6, 101, 8, 8, 8, 101, 8, 6, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cure_blindness, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (14), 5, 12,
"", "!Cure Blindness!", ""},
{
"cure critical", {101, 13, 101, 19, 10, 20, 101, 7, 13, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cure_critical, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (15), 20, 12,
"", "!Cure Critical!", ""},
{
"cure disease", {101, 13, 101, 14, 14, 14, 101, 14, 14, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cure_disease, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (501), 20, 12,
"", "!Cure Disease!", ""},
{
"cure light", {101, 1, 101, 3, 2, 5, 101, 3, 1, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cure_light, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (16), 10, 12,
"", "!Cure Light!", ""},
{
"cure poison", {101, 14, 101, 16, 12, 20, 101, 15, 14, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cure_poison, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (43), 5, 12,
"", "!Cure Poison!", ""},
{
"cure serious", {101, 7, 101, 10, 8, 13, 101, 10, 7, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_cure_serious, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (61), 15, 12,
"", "!Cure Serious!", ""},
{
"curse", {18, 18, 26, 22, 22, 22, 18, 22, 18, 23}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_curse, TAR_OBJ_CHAR_OFF, POS_FIGHTING,
&gsn_curse, SLOT (17), 20, 12,
"curse", "The curse wears off.",
"$p is no longer impure."},
{
"demonfire", {101, 34, 101, 45, 50, 35, 101, 50, 34, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_demonfire, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (505), 20, 12,
"torments", "!Demonfire!", ""},
{
"detect evil", {11, 4, 12, 101, 10, 10, 10, 15, 4, 12}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_detect_evil, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (18), 5, 12,
"", "The red in your vision disappears.", ""},
{
"detect good", {11, 4, 12, 101, 10, 10, 10, 15, 4, 12}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_detect_good, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (513), 5, 12,
"", "The gold in your vision disappears.", ""},
{
"detect hidden", {15, 11, 12, 101, 101, 101, 15, 20, 11, 12}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_detect_hidden, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (44), 5, 12,
"", "You feel less aware of your surroundings.",
""},
{
"detect invis", {3, 8, 6, 101, 101, 101, 3, 101, 8, 5}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_detect_invis, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (19), 5, 12,
"", "You no longer see invisible objects.",
""},
{
"detect magic", {2, 6, 5, 101, 101, 101, 2, 101, 6, 3}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_detect_magic, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (20), 5, 12,
"", "The detect magic wears off.", ""},
{
"detect poison", {15, 7, 9, 101, 101, 101, 15, 40, 7, 9}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_detect_poison, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (21), 5, 12,
"", "!Detect Poison!", ""},
{
"dispel evil", {101, 15, 101, 21, 10, 20, 101, 20, 15, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_dispel_evil, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (22), 15, 12,
"dispel evil", "!Dispel Evil!", ""},
{
"dispel good", {101, 15, 101, 21, 30, 20, 101, 30, 15, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_dispel_good, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (512), 15, 12,
"dispel good", "!Dispel Good!", ""},
{
"dispel magic", {16, 24, 30, 30, 25, 25, 16, 25, 24, 23}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (59), 15, 12,
"", "!Dispel Magic!", ""},
{
"earthquake", {101, 10, 101, 14, 12, 12, 101, 13, 10, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_earthquake, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT (23), 15, 12,
"earthquake", "!Earthquake!", ""},
{
"enchant armor", {16, 101, 101, 101, 35, 35, 16, 35, 101, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_enchant_armor, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (510), 100, 24,
"", "!Enchant Armor!", ""},
{
"enchant weapon", {17, 101, 101, 101, 35, 35, 16, 35, 101, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_enchant_weapon, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (24), 100, 24,
"", "!Enchant Weapon!", ""},
{
"energy drain", {19, 22, 26, 23, 20, 15, 19, 25, 22, 23}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_energy_drain, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (25), 35, 12,
"energy drain", "!Energy Drain!", ""},
{
"faerie fire", {6, 3, 5, 8, 8, 8, 6, 8, 3, 5}, { 1, 1, 1, 1, 1, 1, 1, 1, 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", {14, 21, 16, 24, 24, 24, 14, 24, 31, 16}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_faerie_fog, TAR_IGNORE, POS_STANDING,
NULL, SLOT (73), 12, 12,
"faerie fog", "!Faerie Fog!", ""},
{
"farsight", {14, 16, 16, 101, 40, 40, 14, 40, 15, 15}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_farsight, TAR_IGNORE, POS_STANDING,
NULL, SLOT (521), 36, 20,
"farsight", "!Farsight!", ""},
{
"fireball", {22, 101, 30, 26, 26, 24, 22, 25, 101, 25}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_fireball, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (26), 15, 12,
"fireball", "!Fireball!", ""},
{
"fireproof", {13, 12, 19, 18, 18, 18, 13, 18, 12, 19}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_fireproof, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (523), 10, 12,
"", "", "$p's protective aura fades."},
{
"flamestrike", {101, 20, 101, 27, 25, 25, 101, 25, 20, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_flamestrike, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (65), 20, 12,
"flamestrike", "!Flamestrike!", ""},
{
"fly", {10, 18, 20, 22, 20, 20, 10, 20, 18, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_fly, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (56), 10, 18,
"", "You slowly float to the ground.", ""},
{
"floating disc", {4, 10, 7, 16, 15, 15, 4, 15, 10, 7}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_floating_disc, TAR_IGNORE, POS_STANDING,
NULL, SLOT (522), 40, 24,
"", "!Floating disc!", ""},
{
"frenzy", {101, 24, 101, 26, 25, 25, 101, 25, 24, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_frenzy, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (504), 30, 24,
"", "Your rage ebbs.", ""},
{
"gate", {10, 17, 8, 28, 12, 12, 10, 25, 17, 8}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_gate, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT (83), 80, 12,
"", "!Gate!", ""},
{
"giant strength", {11, 101, 22, 20, 20, 20, 11, 20, 101, 22}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_giant_strength, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (39), 20, 12,
"", "You feel weaker.", ""},
{
"harm", {101, 23, 101, 28, 30, 20, 101, 30, 23, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_harm, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (27), 35, 12,
"harm spell", "!Harm!, " ""},
{
"haste", {21, 101, 26, 29, 25, 25, 21, 25, 101, 24}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_haste, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (502), 30, 12,
"", "You feel yourself slow down.", ""},
{
"heal", {101, 21, 33, 30, 10, 40, 101, 20, 21, 35}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_heal, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (28), 50, 12,
"", "!Heal!", ""},
{
"heat metal", {101, 16, 101, 23, 23, 23, 101, 25, 16, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_heat_metal, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (516), 25, 18,
"spell", "!Heat Metal!", ""},
{
"holy word", {101, 36, 101, 42, 12, 101, 101, 42, 36, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_holy_word, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT (506), 200, 24,
"divine wrath", "!Holy Word!", ""},
{
"identify", {15, 16, 18, 101, 15, 15, 10, 15, 15, 15 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_identify, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (101), 12, 24,
"", "!Identify!", ""},
{
"infravision", {9, 13, 10, 16, 10, 10, 10, 10, 10, 10}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_infravision, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (77), 5, 18,
"", "You no longer see in the dark.", ""},
{
"invisibility", {5, 101, 9, 101, 35, 35, 5, 35, 101, 7}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_invis, TAR_OBJ_CHAR_DEF, POS_STANDING,
&gsn_invis, SLOT (29), 5, 12,
"", "You are no longer invisible.",
"$p fades into view."},
{
"know alignment", {12, 9, 20, 101, 20, 20, 12, 20, 9, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_know_alignment, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT (58), 9, 12,
"", "!Know Alignment!", ""},
{
"lightning bolt", {13, 23, 18, 16, 14, 14, 13, 14, 23, 18}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_lightning_bolt, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (30), 15, 12,
"lightning bolt", "!Lightning Bolt!", ""},
{
"locate object", {9, 15, 11, 101, 12, 12, 9, 12, 15, 10}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_locate_object, TAR_IGNORE, POS_STANDING,
NULL, SLOT (31), 20, 18,
"", "!Locate Object!", ""},
{
"magic missile", {1, 101, 2, 2, 2, 2, 1, 2, 101, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_magic_missile, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (32), 15, 12,
"magic missile", "!Magic Missile!", ""},
{
"mass healing", {101, 38, 101, 46, 20, 101, 101, 30, 38, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_mass_healing, TAR_IGNORE, POS_STANDING,
NULL, SLOT (508), 100, 36,
"", "!Mass Healing!", ""},
{
"mass invis", {22, 25, 31, 101, 101, 101, 22, 101, 25, 31}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_mass_invis, TAR_IGNORE, POS_STANDING,
&gsn_mass_invis, SLOT (69), 20, 24,
"", "You are no longer invisible.", ""},
{
"nexus", {40, 35, 50, 45, 40, 40, 40, 40, 35, 45}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_nexus, TAR_IGNORE, POS_STANDING,
NULL, SLOT (520), 150, 36,
"", "!Nexus!", ""},
{
"pass door", {24, 32, 25, 37, 25, 25, 24, 25, 32, 25}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_pass_door, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (74), 20, 12,
"", "You feel solid again.", ""},
{
"plague", {23, 17, 36, 26, 101, 20, 23, 35, 17, 25 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_plague, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
&gsn_plague, SLOT (503), 20, 12,
"sickness", "Your sores vanish.", ""},
{
"poison", {17, 12, 15, 21, 21, 20, 17, 22, 12, 16}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_poison, TAR_OBJ_CHAR_OFF, POS_FIGHTING,
&gsn_poison, SLOT (33), 10, 12,
"poison", "You feel less sick.",
"The poison on $p dries up."},
{
"portal", {35, 30, 45, 40, 30, 30, 35, 40, 25, 40}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_portal, TAR_IGNORE, POS_STANDING,
NULL, SLOT (519), 100, 24,
"", "!Portal!", ""},
{
"protection evil", {12, 9, 17, 11, 10, 10, 12, 15, 9, 17}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_protection_evil, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (34), 5, 12,
"", "You feel less protected.", ""},
{
"protection good", {12, 9, 17, 11, 10, 10, 12, 10, 9, 17}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_protection_good, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (514), 5, 12,
"", "You feel less protected.", ""},
{
"ray of truth", {101, 35, 101, 47, 40, 101, 101, 40, 35, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_ray_of_truth, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (518), 20, 12,
"ray of truth", "!Ray of Truth!", ""},
{
"recharge", {9, 101, 101, 101, 101, 101, 9, 101, 101, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_recharge, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT (517), 60, 24,
"", "!Recharge!", ""},
{
"refresh", {8, 5, 12, 9, 7, 7, 6, 7, 5, 12}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_refresh, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (81), 12, 18,
"refresh", "!Refresh!", ""},
{
"remove curse", {101, 18, 101, 22, 10, 20, 101, 30, 18, 101}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_remove_curse, TAR_OBJ_CHAR_DEF, POS_STANDING,
NULL, SLOT (35), 5, 12,
"", "!Remove Curse!", ""},
{
"sanctuary", {36, 20, 42, 30, 15, 25, 36, 20, 20, 40}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_sanctuary, TAR_CHAR_DEFENSIVE, POS_STANDING,
&gsn_sanctuary, SLOT (36), 75, 12,
"", "The white aura around your body fades.",
""},
{
"shield", {20, 35, 35, 40, 20, 25, 20, 25, 35, 30}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_shield, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT (67), 12, 18,
"", "Your force shield shimmers then fades away.",
""},
{
"shocking grasp", {10, 101, 14, 13, 13, 13, 10, 13, 101, 14}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_shocking_grasp, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (101), 15, 12,
"shocking grasp", "!Shocking Grasp!", ""},
{
"sleep", {10, 101, 11, 101, 101, 40, 10, 101, 101, 10}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_sleep, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_sleep, SLOT (38), 15, 12,
"", "You feel less tired.", ""},
{
"slow", {23, 30, 29, 32, 32, 32, 23, 32, 30, 25}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_slow, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (515), 30, 12,
"", "You feel yourself speed up.", ""},
{
"stone skin", {25, 40, 40, 45, 30, 30, 25, 40, 40, 30}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_stone_skin, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT (66), 12, 18,
"", "Your skin feels soft again.", ""},
{
"summon", {24, 12, 29, 22, 20, 20, 24, 25, 12, 26}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_summon, TAR_IGNORE, POS_STANDING,
NULL, SLOT (40), 50, 12,
"", "!Summon!", ""},
{
"tesseract", { 20, 25, 28, 30,25,25,20,30,25,20},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_tesseract, TAR_IGNORE, POS_STANDING,
&gsn_tesseract, SLOT(556), 150, 12,
"", "!tesseract!", ""},
{
"teleport", {13, 22, 25, 36, 36, 36, 13, 36, 22, 20}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_teleport, TAR_CHAR_SELF, POS_FIGHTING,
NULL, SLOT (2), 35, 12,
"", "!Teleport!", ""},
{
"ventriloquate", {1, 101, 2, 101, 101, 101, 1, 101, 101, 2}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_ventriloquate, TAR_IGNORE, POS_STANDING,
NULL, SLOT (41), 5, 12,
"", "!Ventriloquate!", ""},
{
"weaken", {11, 14, 16, 17, 16, 16, 11, 16, 14, 16},{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_weaken, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (68), 20, 12,
"spell", "You feel stronger.", ""},
{
"word of recall", {32, 28, 40, 30, 30, 30, 32, 30, 28, 40}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_word_of_recall, TAR_CHAR_SELF, POS_RESTING,
NULL, SLOT (42), 5, 12,
"", "!Word of Recall!", ""},
/*
* Dragon breath
*/
{
"acid breath", {31, 32, 33, 34, 34, 34, 31, 34, 32, 33}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_acid_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (200), 100, 24,
"blast of acid", "!Acid Breath!", ""},
{
"fire breath", {40, 45, 50, 51, 51, 51, 40, 51, 45, 50}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_fire_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (201), 200, 24,
"blast of flame", "The smoke leaves your eyes.", ""},
{
"frost breath", {34, 36, 38, 40, 40, 40, 34, 40, 36, 38}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_frost_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (202), 125, 24,
"blast of frost", "!Frost Breath!", ""},
{
"gas breath", {39, 43, 47, 50, 50, 50, 39, 50, 43, 47}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_gas_breath, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT (203), 175, 24,
"blast of gas", "!Gas Breath!", ""},
{
"lightning breath", {37, 40, 43, 46, 46, 46, 37, 46, 40, 43},{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_lightning_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (204), 150, 24,
"blast of lightning", "!Lightning Breath!", ""},
/*
* Spells for mega1.are from Glop/Erkenbrand.
*/
{
"general purpose", {101, 101, 101, 101, 101, 101, 101, 101, 101, 101}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
spell_general_purpose, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT (401), 0, 12,
"general purpose ammo", "!General Purpose Ammo!", ""},
{
"high explosive", {101, 101, 101, 101, 101, 101, 101, 101, 101, 101},{0, 0, 0, 0, 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!", ""},
/* combat and weapons skills */
{
"assassinate", {60, 60, 10, 10, 60, 60, 60, 60, 60, 10}, {0, 0, 5, 5, 0, 0, 0, 0, 0, 5},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_assassinate, SLOT(0), 0, 18,
"assassination attempt", "!assassinate!", ""},
{
"axe", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {6, 6, 5, 4, 4, 4, 6, 4, 5, 5},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_axe, SLOT (0), 0, 0,
"", "!Axe!", ""},
{
"dagger", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {2, 3, 2, 2, 2, 2, 2, 2, 3, 2},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_dagger, SLOT (0), 0, 0,
"", "!Dagger!", ""},
{
"flail", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {6, 3, 6, 4, 4, 4, 6, 4, 3, 6},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_flail, SLOT (0), 0, 0,
"", "!Flail!", ""},
{
"mace", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {5, 2, 3, 3, 3, 3, 5, 3, 2, 4},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_mace, SLOT (0), 0, 0,
"", "!Mace!", ""},
{
"polearm", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {6, 6, 6, 4, 4, 4, 6, 4, 6, 6},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_polearm, SLOT (0), 0, 0,
"", "!Polearm!", ""},
{
"shield block", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {6, 4, 6, 2, 2, 2, 6, 2, 4, 6 },
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_shield_block, SLOT (0), 0, 0,
"", "!Shield!", ""},
{
"spear", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {4, 4, 4, 3, 3, 3, 4, 3, 4, 4},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_spear, SLOT (0), 0, 0,
"", "!Spear!", ""},
{
"sword", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {5, 6, 3, 2, 2, 2, 5, 2, 6, 3},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_sword, SLOT (0), 0, 0,
"", "!sword!", ""},
{
"whip", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {6, 5, 5, 4, 4, 4, 6, 4, 5, 5},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_whip, SLOT (0), 0, 0,
"", "!Whip!", ""},
{
"backstab", {101, 101, 1, 101, 101, 101, 101, 101, 101, 1}, {0, 0, 5, 0, 0, 0, 0, 0, 0, 5},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_backstab, SLOT (0), 0, 24,
"backstab", "!Backstab!", ""},
{
"circle", {60, 60, 10, 60, 60, 60, 60, 60, 60, 10}, {0, 0, 5, 0, 0, 0, 0, 0, 0, 5},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_circle, SLOT (0), 0, 24,
"circle", "!Circle!", ""},
{
"jugular slice", {60, 60, 60, 15, 25, 25, 60, 20, 60, 60},
{0, 0, 0, 3, 5, 5, 0, 0, 0, 0},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_jugular_slice, SLOT (0), 0, 24,
"jugular slice", "!Jugular Slice!", ""},
{
"bomuzite", {60, 60, 10, 60, 60, 60, 60, 60, 60, 60}, {0, 0, 5, 0, 0, 0, 0, 0, 0, 0},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_bomuzite, SLOT (0), 0, 24,
"bomuzite", "!Bomuzite!", ""},
{
"bash", {101, 101, 101, 1, 1, 1, 101, 1, 101, 101}, {0, 0, 0, 4, 4, 4, 0, 4, 0, 0},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_bash, SLOT (0), 0, 24,
"bash", "!Bash!", ""},
{
"berserk", {101, 101, 101, 18, 15, 15, 101, 15, 101, 101}, {0, 0, 0, 5, 5, 5, 0, 5, 0, 0},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_berserk, SLOT (0), 0, 24,
"", "You feel your pulse slow down.", ""},
{
"cleave", { 60, 60, 60, 60, 30, 30, 60, 60 ,60,60},{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_null, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_cleave, SLOT(0), 0, 24,
"cleave", "!Cleave!", ""},
{
"dirt kicking", {101, 101, 3, 3, 3, 3, 101, 3, 101, 3}, {0, 0, 4, 4, 4, 4, 0, 4, 0, 4},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_dirt, SLOT (0), 0, 24,
"kicked dirt", "You rub the dirt out of your eyes.", ""},
{
"disarm", {101, 101, 12, 11, 11, 11, 101, 11, 101, 12}, {0, 0, 6, 4, 4, 4, 0, 4, 0, 6},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_disarm, SLOT (0), 0, 24,
"", "!Disarm!", ""},
{
"dodge", {20, 22, 1, 13, 13, 13, 20, 13, 22, 1}, {8, 8, 4, 6, 6, 6, 8, 6, 8, 4},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_dodge, SLOT (0), 0, 0,
"", "!Dodge!", ""},
{
"dual backstab", { 60, 60, 15, 60, 60, 60, 60, 60 ,60,15},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1},
spell_null, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_dual_backstab, SLOT(0), 0, 0,
"second backstab", "!dual backstab!", ""},
{
"precisionstrike", {60, 60, 60, 5, 60, 60, 60, 60, 60, 60},
{0, 0, 0, 5, 0, 0, 0, 0, 0, 0},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_precisionstrike, SLOT (0), 0, 24,
"precision strike", "!Precision Strike!", ""},
{
"enhanced damage", {45, 30, 25, 1, 1, 1, 45, 1, 30, 25}, {10, 9, 5, 3, 3, 3, 10, 3, 9, 5},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_enhanced_damage, SLOT (0), 0, 0,
"", "!Enhanced Damage!", ""},
{
"envenom", {101, 101, 10, 101, 101, 101, 101, 101, 101, 10}, {0, 0, 4, 0, 0, 0, 0, 0, 0, 4},
spell_null, TAR_IGNORE, POS_RESTING,
&gsn_envenom, SLOT (0), 0, 36,
"", "!Envenom!", ""},
{
"grip", { 40, 35, 30, 10, 15, 15, 40, 16, 30, 30},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_grip, SLOT( 0), 0, 18,
"", "!Grip!", ""},
{
"hand to hand", {25, 10, 15, 6, 6, 6, 25, 6, 10, 15}, {8, 5, 6, 4, 4, 4, 8, 4, 5, 6},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_hand_to_hand, SLOT (0), 0, 0,
"", "!Hand to Hand!", ""},
{
"kick", {101, 12, 14, 8, 8, 8, 101, 8, 12, 14}, {0, 4, 6, 3, 3, 3, 0, 3, 4, 6},
spell_null, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
&gsn_kick, SLOT (0), 0, 12,
"kick", "!Kick!", ""},
{
"parry", {22, 20, 13, 1, 1, 1, 22, 1, 20, 13}, {8, 8, 6, 4, 4, 4, 8, 4, 8, 6},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_parry, SLOT (0), 0, 0,
"", "!Parry!", ""},
{
"rescue", {101, 101, 101, 1, 1, 1, 101, 1, 101, 101}, {0, 0, 0, 4, 4, 4, 0, 4, 0, 0},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_rescue, SLOT (0), 0, 12,
"", "!Rescue!", ""},
{
"trip", {101, 101, 1, 15, 15, 15, 101, 15, 101, 1}, {0, 0, 4, 8, 8, 8, 0, 8, 0, 4},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_trip, SLOT (0), 0, 24,
"trip", "!Trip!", ""},
{
"second attack", {30, 24, 12, 5, 5, 5, 30, 5, 24, 15}, {10, 8, 5, 3, 3, 3, 10, 3, 8, 5},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_second_attack, SLOT (0), 0, 0,
"", "!Second Attack!", ""},
{
"third attack", {35, 30, 20, 12, 12, 12, 35, 12, 30, 20}, {10, 8, 5, 4, 4, 4, 10, 4, 10, 10},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_third_attack, SLOT (0), 0, 0,
"", "!Third Attack!", ""},
{
"fourth attack", {101, 101, 30, 15, 15, 15, 101, 15, 101, 35}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_fourth_attack, SLOT (0), 0, 0,
"", "!Fourth Attack!", ""},
{
"fifth attack", {101, 101, 35, 20, 20, 20, 101, 20, 101, 35}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_fifth_attack, SLOT (0), 0, 0,
"", "!Fifth Attack!", ""},
/* non-combat skills */
{
"fast healing", {15, 9, 16, 6, 6, 6, 15, 6, 9, 16}, {8, 5, 6, 4, 4, 4, 8, 4, 5, 6},
spell_null, TAR_IGNORE, POS_SLEEPING,
&gsn_fast_healing, SLOT (0), 0, 0,
"", "!Fast Healing!", ""},
{
"haggle", {7, 18, 1, 14, 14, 14, 7, 14, 18, 1}, {5, 8, 3, 6, 6, 6, 5, 6, 8, 3},
spell_null, TAR_IGNORE, POS_RESTING,
&gsn_haggle, SLOT (0), 0, 0,
"", "!Haggle!", ""},
{
"hide", {101, 101, 1, 12, 12, 12, 101, 12, 101, 1}, {0, 0, 4, 6, 6, 6, 0, 6, 0, 4},
spell_null, TAR_IGNORE, POS_RESTING,
&gsn_hide, SLOT (0), 0, 12,
"", "!Hide!", ""},
{
"lore", {10, 10, 6, 20, 20, 20, 10, 20, 10, 6}, {6, 6, 4, 8, 8, 8, 6, 8, 6, 4},
spell_null, TAR_IGNORE, POS_RESTING,
&gsn_lore, SLOT (0), 0, 36,
"", "!Lore!", ""},
{
"meditation", {6, 6, 15, 15, 15, 15, 6, 15, 6, 15}, {5, 5, 8, 8, 8, 8, 5, 8, 5, 8},
spell_null, TAR_IGNORE, POS_SLEEPING,
&gsn_meditation, SLOT (0), 0, 0,
"", "Meditation", ""},
{
"peek", {8, 21, 1, 14, 14, 14, 8, 14, 21, 1}, {5, 7, 3, 6, 6, 6, 5, 6, 7, 3},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_peek, SLOT (0), 0, 0,
"", "!Peek!", ""},
{
"pick lock", {25, 25, 7, 25, 25, 25, 25, 25, 25, 7}, {8, 8, 4, 8, 8, 8, 8, 8, 4},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_pick_lock, SLOT (0), 0, 12,
"", "!Pick!", ""},
{
"sneak", {101, 101, 4, 10, 10, 10, 101, 10, 101, 4}, {0, 0, 4, 6, 6, 6, 0, 6, 0, 4},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_sneak, SLOT (0), 0, 12,
"", "You no longer feel stealthy.", ""},
{
"steal", {101, 101, 5, 101, 101, 101, 101, 101, 101, 5}, {0, 0, 4, 0, 0, 0, 0, 0, 0, 4},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_steal, SLOT (0), 0, 24,
"", "!Steal!", ""},
{
"scrolls", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {2, 3, 5, 8, 8, 8, 2, 8, 3, 5},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_scrolls, SLOT (0), 0, 24,
"", "!Scrolls!", ""},
{
"staves", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {2, 3, 5, 8, 8, 8, 2, 8, 3, 5},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_staves, SLOT (0), 0, 12,
"", "!Staves!", ""},
{
"wands", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {2, 3, 5, 8, 8, 8, 2, 8, 3, 5},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_wands, SLOT (0), 0, 12,
"", "!Wands!", ""},
{
"recall", {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_recall, SLOT (0), 0, 12,
"", "!Recall!", ""}
};
const struct group_type group_table[MAX_GROUP] = {
{
"rom basics", {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{"scrolls", "staves", "wands", "recall"}
},
{
"mage basics", {0, -1, -1, -1, -1, -1, 0, -1, -1, -1},
{"dagger"}
},
{
"cleric basics", {-1, 0, -1, -1, -1, -1, -1, -1, 0, -1},
{"mace"}
},
{
"thief basics", {-1, -1, 0, -1, -1, -1, -1, -1, -1, 0},
{"dagger", "steal"}
},
{
"warrior basics", {-1, -1, -1, 0, 0, 0, -1, 0, -1, -1},
{"sword", "second attack"}
},
{
"mage default", {40, -1, -1, -1, -1, -1, -1, -1, -1, -1},
{"lore", "beguiling", "combat", "detection", "enhancement", "illusion",
"maladictions", "protective", "transportation", "weather"}
},
{
"cleric default", {-1, 40, -1, -1, -1, -1, -1, -1, -1, -1},
{"flail", "attack", "creation", "curative", "benedictions",
"detection", "healing", "maladictions", "protective", "shield block",
"transportation", "weather"}
},
{
"paladin default", {-1, -1, -1, -1, 40, -1, -1, -1, -1, -1},
{"weaponsmaster", "shield block", "bash", "maladictions", "enhanced damage",
"benedictions", "protective", "parry", "rescue", "third attack"}
},
{
"antipaladin default", {-1, -1, -1, -1, -1, 40, -1, -1, -1, -1},
{"weaponsmaster", "shield block", "bash", "maladictions", "enhanced damage",
"combat", "transportation", "parry", "rescue", "third attack"}
},
{
"ninja default", {-1, -1, 40, -1, -1, -1, -1, -1, -1, -1},
{"mace", "sword", "backstab", "disarm", "dodge", "second attack",
"trip", "hide", "peek", "pick lock", "sneak"}
},
{
"samurai default", {-1, -1, -1, 40, -1, -1, -1, -1, -1, -1},
{"weaponsmaster", "shield block", "bash", "disarm", "enhanced damage",
"parry", "rescue", "third attack"}
},
{
"necromancer default", {-1, -1, -1, -1, -1, -1, 0, -1, -1, -1},
{"lore", "beguiling", "combat", "detection", "enhancement", "attack",
"maladictions", "protective", "transportation", "weather"}
},
{
"ranger default", {-1, -1, -1, -1, -1, -1, -1, 0, -1, -1},
{"weaponsmaster", "shield block", "detection", "disarm", "enhanced damage",
"weather", "curative", "parry", "rescue", "third attack"}
},
{
"monk default", {-1, -1, -1, -1, -1, -1, -1, -1, 0, -1},
{"mace", "attack", "creation", "curative", "benedictions",
"detection", "healing", "maladictions", "protective", "shield block",
"transportation", "weather"}
},
{
"assassin default", {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0},
{"mace", "sword", "backstab", "disarm", "dodge", "second attack",
"trip", "hide", "peek", "pick lock", "sneak", "lore", "beguiling",
"combat", "detection", "enhancement", "illusion", "maladictions",
"attack", "transportation", "weather"}
},
{
"weaponsmaster", {40, 40, 40, 20, 20, 20, 40, 20, 40, 40},
{"axe", "dagger", "flail", "mace", "polearm", "spear", "sword", "whip"}
},
{
"attack", {-1, 5, -1, 8, 8, 8, -1, 8, 5, 0},
{"demonfire", "dispel evil", "dispel good", "earthquake",
"flamestrike", "heat metal", "ray of truth"}
},
{
"beguiling", {4, -1, 6, -1, -1, -1, 4, -1, -1, 4},
{"calm", "charm person", "sleep"}
},
{
"benedictions", {-1, 4, -1, 8, 8, 8, -1, 8, 4, -1},
{"bless", "calm", "frenzy", "holy word", "remove curse"}
},
{
"combat", {6, -1, 10, 9, 9, 9, 6, 9, -1, 10},
{"acid arrow", "acid blast", "burning hands", "chain lightning", "chill touch",
"colour spray", "fireball", "lightning bolt", "magic missile",
"shocking grasp"}
},
{
"creation", {4, 4, 8, 8, 8, 8, 4, 8, 4, 8},
{"continual light", "create food", "create spring", "create water",
"create rose", "floating disc"}
},
{
"curative", {-1, 4, -1, 8, 8, 8, -1, 8, 4, -1},
{"cure blindness", "cure disease", "cure poison"}
},
{
"detection", {4, 3, 6, -1, -1, -1, 4, -1, 3, 6},
{"detect evil", "detect good", "detect hidden", "detect invis",
"detect magic", "detect poison", "farsight", "identify",
"know alignment", "locate object"}
},
{
"draconian", {8, -1, -1, -1, -1, -1, 8, -1, -1, -1},
{"acid breath", "fire breath", "frost breath", "gas breath",
"lightning breath"}
},
{
"enchantment", {6, -1, -1, -1, -1, -1, 6, -1, -1, -1},
{"enchant armor", "enchant weapon", "fireproof", "recharge"}
},
{
"enhancement", {5, -1, 9, 9, 9, 9, 5, 9, -1, 9},
{"giant strength", "haste", "infravision", "refresh"}
},
{
"harmful", {-1, 3, -1, 6, 6, 6, -1, 6, 3, -1},
{"cause critical", "cause light", "cause serious", "harm"}
},
{
"healing", {-1, 3, -1, 6, 6, 6, -1, 6, 3, -1},
{"cure critical", "cure light", "cure serious", "heal",
"mass healing", "refresh"}
},
{
"illusion", {4, -1, 7, -1, -1, -1, 4, -1, -1, 7},
{"invis", "mass invis", "ventriloquate"}
},
{
"maladictions", {5, 5, 9, 9, 9, 9, 5, 9, 5, 9},
{"blindness", "change sex", "curse", "energy drain", "plague",
"poison", "slow", "weaken"}
},
{
"protective", {4, 4, 7, 8, 8, 8, 4, 8, 4, 7},
{"armor", "cancellation", "dispel magic", "fireproof",
"protection evil", "protection good", "sanctuary", "shield",
"stone skin"}
},
{
"transportation", {4, 4, 8, 9, 9, 9, 4, 9, 4, 8},
{"fly", "gate", "nexus", "pass door", "portal", "summon", "teleport",
"tesseract", "word of recall"}
},
{
"weather", {4, 4, 8, 8, 8, 8, 4, 8, 4, 8},
{"call lightning", "control weather", "faerie fire", "faerie fog",
"lightning bolt"}
}
};
int god_lookup (const char *name)
{
int god;
for (god = 0; god < MAX_GOD; god++)
{
if (LOWER (name[0]) == LOWER (god_table[god].name[0])
&& !str_prefix (name, god_table[god].name))
return god;
}
return -1;
}