SC/finger/
SC/notes/
SC/player/s/
/***************************************************************************
 *  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.                                                  *
 ***************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <math.h>
#include <stdio.h>
#include <time.h>
#include "merc.h"



/*
 * Not a const, but a necessary initialization
 */
struct	lltype	leaderboard	[MAX_LEADERS+5]	=
{
  { "none", "none", 10, 0, 10 },
  { "none", "none", 9, 0, 9 },
  { "fuck", "asdf", 8, 0, 8 },
  { "shit", "asdf", 7, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 },
  { "none", "none", 8, 0, 8 }
};

struct	lltype	loserboard	[10]	=
{
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 },
  { "none", "none", 0, 10, 0 }
};

struct	clan_type	clan_table	[MAX_CLANS+1]	=
{
  { "none",	"     ",	1,	0,	0,	0,	0,
    { 0, 0, 0, 0, 0, 0, 0 },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    { "God", "Master", "Enforcer", "Officer", "Member", "Initiate" }
  },

  { "Malokteri",     "`d (`W\\`d/`W)`n", 1,   0,      0,      0,      0,
    { 0, 0, 0, 0, 0, 0, 0 },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    {"GOD", "Maskim Xul", "Nekelmu", "Idimmu", "Lalartu", "Lalassu" }
  },

  { "Cith Deux",	" `r<`R|>`n ", 1,	0,	0,	0,	0,
    { 0, 0, 0, 0, 0, 0, 0 },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    {"GOD", "Deux Xa", "Deux Mas", "Gaiden", "Vein", "Acolyte" }
  },

  { "Divergent",	"`B<`b- `r-`R>`n", 1,	0,	0,	0,	0,
    { 0, 0, 0, 0, 0, 0, 0  },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    { "GOD", "God of Death", "Great Destroyer", "Executioner", "Obliterator", "Murderor" }
  },

  { "Teikoku",	"`W^^`R!`W^^`n", 1, 0, 0, 0, 0,
    { 0, 0, 0, 0, 0, 0, 0 },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    { "GOD", "Emperor", "Shogun", "Samurai", "Ninja", "Peasant" }
  },

  { "Z-Rollers",		"`y-`Y<`WZ`Y>`y-`n", 1, 0, 0, 0, 0,
    { 0, 0, 0, 0, 0, 0, 0 },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    { "GOD", "Hirohito", "Kurokaze", "Akaikaze", "AburaKodomo", "Kamikaze" }
  },

  { "Renegades",	"`b<`B{`WR`B}`b>`n", 1, 0, 0, 0, 0,
    { 0, 0, 0, 0, 0, 0, 0 },	{ 2, 2, 2, 2, 2, 2, 2 },	TRUE,
    { "GOD", "Mihari", "MourningStar", "Mercenary", "Runaway", "Initiate" }
  }
};

const	char*	dip_table[5]	=
{ "`Gallied `n", "`B amity `n", "`nneutral", "`Yhostile`n", "`r  war  `n" };


/*
 * Suit table.
 */
const	struct	suit_type	suit_table	[MAX_SUITS+1]	=
{
  { "None", 0, 0, 0, 0, 0, 0, 0, 0 },
  { "Leo", 2573, 4, 0, 100, 100, 100, 100, 100 },
  { "Aries", 904, 384, 100, 100, 110, 110, 90, 90 },
  { "Taurus", 568, 8, 400, 100, 110, 125, 110, 110 },
  { "Virgo", 58, 8, 750, 130, 140, 125, 110, 120 },
  { "Mercurius", 8203, 8203, 1000, 150, 100, 125, 130, 130 },
  { "Vayeate", 88, 88, 1000, 110, 160, 125, 110, 130 },
  { "Tallgeese", 2825, 2825, 1500, 100, 110, 150, 130, 120 },
  { "Wing Zero", 299520, 299520, 2000, 150, 150, 160, 140, 140 },
  { "Wing Gundam", 21120, 21120, 1400, 130, 140, 150, 120, 130 },
  { "Deathscythe", 8454273, 8454273, 1400, 140, 120, 160, 120, 120 },
  { "Heavyarms", 398208, 398208, 1400, 110, 160, 110, 140, 140 },
  { "Sandrock", 528768, 528768, 1400, 120, 120, 110, 150, 160 },
  { "Shenlong", 19923073, 19923073, 1400, 160, 110, 130, 140, 120 },
  { "Epyon", 4195329, 4195329, 2000, 160, 140, 160, 140, 140 },
  { "M1A1 Tank", 17172740, 17172740, 2000, 160, 160, 160, 160, 195 }
};

const	struct	materia_type	materia_table	[MAX_MATERIA+1]	=
{
  { 0, "None",	1000000,
  	{ "None", "None", "NoNe", "NONE" },
	{ 0, 1000, 2000, 5000 },
	{ spell_null, spell_null, spell_null, spell_null } },
  { 1, "Fire", 35000,
  	{ "fire", "fire2", "fire3", "" },
  	{ 2000, 18000, 35000, -1 },
  	{ spell_fire, spell_fire2, spell_fire3, spell_null } },
  { 2, "Ice", 35000,
  	{ "ice", "ice2", "ice3", "" },
  	{ 2000, 18000, 35000, -1 },
  	{ spell_ice, spell_ice2, spell_ice3, spell_null } },
  { 3, "Lightning", 35000,
  	{ "bolt", "bolt2", "bolt3", "" },
  	{ 2000, 18000, 35000, -1 },
  	{ spell_bolt, spell_bolt2, spell_bolt3, spell_null } },
  { 4, "Restore", 40000,
  	{ "cure", "cure2", "regen", "cure3" },
  	{ 2500, 17000, 24000, 40000 },
  	{ spell_cure, spell_cure2, spell_regen, spell_cure3 } },
  { 5, "Earth", 40000,
  	{ "quake", "quake2", "quake3", "" },
  	{ 6000, 22000, 40000, -1 },
  	{ spell_quake, spell_quake2, spell_quake3, spell_null } },
  { 6, "Poison", 38000,
  	{ "bio", "bio2", "bio3", "" },
  	{ 5000, 20000, 38000, -1 },
  	{ spell_bio, spell_bio2, spell_bio3, spell_null } },
  { 7, "Heal", 60000,
  	{ "poisona", "esuna", "resist", "" },
  	{ 12000, 52000, 60000, -1 },
  	{ spell_poisona, spell_esuna, spell_resist, spell_null } },
  { 8, "Revive", 55000,
  	{ "life", "life2", "", "" },
  	{ 45000, 55000, -1, -1 },
  	{ spell_life, spell_life2, spell_null, spell_null } },
  { 9, "Barrier", 45000,
  	{ "barrier", "shell", "reflect", "wall" },
  	{ 5000, 15000, 30000, 45000 },
  	{ spell_barrier, spell_shell, spell_reflect, spell_wall } },
  { 10, "Seal", 20000,
  	{ "sleepel", "silence", "", "" },
  	{ 10000, 20000, -1, -1 },
  	{ spell_sleepel, spell_silence, spell_null, spell_null } },
  { 11, "Time", 42000,
  	{ "haste", "slow", "stop", "" },
  	{ 8000, 20000, 42000, -1 },
  	{ spell_haste, spell_slow, spell_stop, spell_null } },
  { 12, "Gravity", 40000,
  	{ "demi", "demi2", "demi3", "" },
  	{ 10000, 20000, 40000, -1 },
  	{ spell_demi, spell_demi2, spell_demi3, spell_null } },
  { 13, "Destruct", 45000,
  	{ "debarrier", "despell", "death", "" },
  	{ 6000, 10000, 45000, -1 },
  	{ spell_debarrier, spell_despell, spell_death, spell_null } },
  { 14, "Comet", 60000,
  	{ "comet", "comet2", "", "" },
  	{ 12000, 60000, -1, -1 },
  	{ spell_comet, spell_comet2, spell_null, spell_null } },
  { 15, "Contain", 60000,
  	{ "freeze", "break", "tornado", "flare" },
  	{ 5000, 10000, 15000, 60000 },
  	{ spell_freeze, spell_break, spell_tornado, spell_flare } },
  { 16, "Ultima", 100000,
  	{ "ultima", "", "", "" },
  	{ 100000, -1, -1, -1 },
  	{ spell_ultima, spell_null, spell_null, spell_null } }
};

/*
 * Generated weapons table.
 */
const	struct	wgen_type	wgen_table	[MAX_WGEN]	=
{
  {	1,	"katana"	},
  {	1,	"longsword"	},
  {	1,	"nodachi"	},
  {	1,	"blade"		},
  {	2,	"dagger"	},
  {	2,	"knife"		},
  {	2,	"fountain pen"	},
  {	2,	"tanto"		},
  {	3,	"broadsword"	},
  {	3,	"falchion"	},
  {	3,	"machete"	},
  {	3,	"sabre"		},
  {	4,	"whip"		},
  {	4,	"chain whip"	},
  {	5,	"tiger-claw"	},
  {	6,	"shotgun"	},
  {	6,	"AkMag rifle"	},
  {	6,	"magnum"	},
  {	6,	"desert eagle"	},
  {	7,	"club"		},
  {	7,	"cudgel"	},
  {	7,	"billy club"	},
  {	7,	"quarterstaff"	},
  {	8,	"flail"		},
  {	8,	"mace"		},
  {	8,	"morning star"	},
  {	9,	"UNIX manual"	},
  {	9,	"log file"	},
  {	10,	"book review"	},
  {	10,	"satire"	},
  {	11,	"rapier"	},
  {	11,	"stiletto"	},
  {	11,	"dirk"		},
  {	12,	"lip gloss"	},
  {	12,	"lipstick"	}
};




/*
 * Class table.
 */
const	struct	class_type	class_table	[MAX_CLASS]	=
{
    {
	"None",  APPLY_INT,  OBJ_VNUM_SCHOOL_DAGGER,
	3018, 15, 15, 15, 15,  8, FALSE
    },

    {
	"Saiyan",  APPLY_WIS,  OBJ_VNUM_SCHOOL_MACE,
	3003, 100, 75, 90, 80, 10, FALSE
    },

    {
	"Patryn",  APPLY_DEX,  OBJ_VNUM_SCHOOL_DAGGER,
	3028,  80, 100, 75, 85, 13, FALSE
    },

    {
	"Fist",  APPLY_STR,  OBJ_VNUM_SCHOOL_SWORD,
	3022, 90, 75, 100, 80, 15, FALSE
    },

    {
    	"Sorcerer",	APPLY_INT,	OBJ_VNUM_SCHOOL_DAGGER,
    	3018, 75, 90, 80, 100, 5, TRUE
    },

    {
    	"Mazoku",	APPLY_INT,	OBJ_VNUM_SCHOOL_DAGGER,
    	3018, 95, 95, 95, 95, 10, FALSE
    }
};

/*
 * Stance table..
 */
const	struct	stance_type	stance_table	[MAX_STANCES+1]	=
{
  // no stance
  // none lion lynx snake badger ferret hawk eagle vulture sparrow humming
  { "name",	0,	0,
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
  },
  // Lion
  { "lion",	1,	0,
    { 5, 5, 4, 1, 3, 4, 3, 2, 0, 1, 1 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
   },
  // Lynx
  { "lynx",	1,	0,
    { 5, 4, 3, 1, 2, 2, 3, 1, 0, 1, 1 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 2, 1, 0, 0, 2, 2, 0, 0, 0, 1, 1 }
  },
  // Snake
  { "snake",	0,	1,
    { 2, 2, 2, 2, 0, 0, 1, 1, 0, 0, 0 },
    { 2, 4, 4, 3, 1, 1, 3, 3, 2, 1, 0 },
    { 2, 4, 4, 3, 1, 1, 3, 3, 2, 1, 0 }
  },
  // Badger
  { "badger",	0,	2,
    { 2, 1, 2, 3, 2, 1, 0, 1, 2, 1, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 5, 3, 3, 5, 5, 4, 1, 2, 4, 3, 2 }
  },
  // Ferret
  { "ferret",	0,	3,
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 5, 2, 3, 5, 5, 5, 1, 2, 3, 4, 4 },
    { 5, 2, 3, 5, 5, 5, 1, 2, 3, 4, 4 }
  },
  // Hawk
  { "hawk",	3,	1,
    { 9, 9, 8, 8, 8, 9, 9, 7, 4, 7, 9 },
    { 5, 4, 4, 3, 5, 5, 2, 1, 0, 3, 4 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
  },
  // Eagle
  { "eagle",	2,	2,
    { 8, 7, 6, 7, 7, 8, 7, 7, 6, 7, 7 },
    { 3, 3, 2, 2, 3, 3, 2, 0, 0, 1, 2 },
    { 3, 3, 2, 2, 3, 3, 2, 1, 0, 1, 1 }
  },
  // Vulture
  { "vulture",	1,	3,
    { 5, 5, 5, 5, 4, 4, 5, 5, 4, 3, 2 },
    { 6, 7, 7, 6, 4, 3, 6, 5, 5, 3, 3 },
    { 5, 7, 7, 6, 4, 3, 6, 6, 4, 2, 2 }
  },
  // Sparrow
  { "sparrow",	1,	4,
    { 2, 2, 2, 3, 2, 2, 0, 2, 5, 3, 1 },
    { 6, 6, 6, 8, 6, 6, 2, 3, 7, 6, 6 },
    { 5, 7, 7, 9, 8, 8, 5, 2, 6, 6, 6 }
  },
  // Stork 
  { "stork",	1,	5,
    { 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 1 },
    { 9, 9, 9, 9, 9, 9, 2, 3, 9, 7, 7 },
    { 9, 9, 9, 9, 9, 9, 3, 4, 9, 8, 8 }
  }
}; // end of stance_table
 

 


/*
 * 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.
 */
#define SLOT(n)	n

const	struct	skill_type	skill_table	[MAX_SKILL]	=
{

/*
 * Magic spells.
 */

    {
	"reserved",		{ 99, 99, 99, 99, 99, 99 },
	0,			TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT( 0),	 0,	 0,	FALSE,
	"",			""
    },

    {
	"acid blast",		{ 20, 20, 20, 20, 20, 20 },
	spell_acid_blast,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(70),	20,	12,	FALSE,
	"acid blasts",		"!Acid Blast!"
    },

    {
	"armor",		{ 20, 20, 20, 20, 2, 20 },
	spell_armor,		TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT( 1),	 5,	12,	FALSE,
	"",			"You feel less protected."
    },

    {
	"bless",		{ 20, 20, 20, 20, 2, 20 },
	spell_bless,		TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT( 3),	 5,	12,	FALSE,
	"",			"You feel less righteous."
    },

    {
	"blindness",		{ 20, 20, 20, 20, 20, 20 },
	spell_blindness,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	&gsn_blindness,		SLOT( 4),	 5,	12,	FALSE,
	"",			"You can see again."
    },

    {
	"burning hands",	{ 20, 20, 20, 20, 2, 20 },
	spell_burning_hands,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT( 5),	15,	12,	FALSE,
	"Bar-B-Qs",		"!Burning Hands!"
    },

    {
	"call lightning",	{ 20, 20, 20, 20, 2, 20 },
	spell_call_lightning,	TAR_IGNORE,		POS_FIGHTING,
	NULL,			SLOT( 6),	15,	12,	FALSE,
	"lightning bolts",	"!Call Lightning!"
    },

    {
	"cause critical",	{ 20, 20, 20, 20, 2, 20 },
	spell_cause_critical,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(63),	20,	12,	FALSE,
	"harms",		"!Cause Critical!"
    },

    {
	"cause light",		{ 20, 20, 20, 20, 2, 20 },
	spell_cause_light,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(62),	15,	12,	FALSE,
	"harms",		"!Cause Light!"
    },

    {
	"cause serious",	{ 20, 20, 20, 20, 2, 20 },
	spell_cause_serious,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(64),	17,	12,	FALSE,
	"harms",		"!Cause Serious!"
    },

    {
	"change sex",		{ 20, 20, 20, 20, 2, 20 },
	spell_change_sex,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(82),	15,	12,	FALSE,
	"",			"Your body feels familiar again."
    },

    {
	"charm person",		{ 20, 20, 20, 20, 20, 20 },
	spell_charm_person,	TAR_CHAR_OFFENSIVE,	POS_STANDING,
	&gsn_charm_person,	SLOT( 7),	 5,	12,	FALSE,
	"",			"You feel more self-confident."
    },

    {
	"chill touch",		{ 20, 20, 20, 20, 2, 20 },
	spell_chill_touch,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT( 8),	15,	12,	FALSE,
	"chill touches",	"You feel less cold."
    },

    {
	"colour spray",		{ 20, 20, 20, 20, 2, 20 },
	spell_colour_spray,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(10),	15,	12,	FALSE,
	"colour spray",		"!Colour Spray!"
    },

    {
	"continual light",	{ 20, 20, 20, 20, 2, 20 },
	spell_continual_light,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(57),	 7,	12,	FALSE,
	"",			"!Continual Light!"
    },

    {
	"control weather",	{ 20, 20, 20, 20, 2, 20 },
	spell_control_weather,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(11),	25,	12,	FALSE,
	"",			"!Control Weather!"
    },

    {
	"create food",		{ 20, 20, 20, 20, 20, 20 },
	spell_create_food,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(12),	 5,	12,	FALSE,
	"",			"!Create Food!"
    },

    {
	"create spring",	{ 20, 20, 20, 20, 20, 20 },
	spell_create_spring,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(80),	20,	12,	FALSE,
	"",			"!Create Spring!"
    },

    {
	"create water",		{ 20, 20, 20, 20, 20, 20 },
	spell_create_water,	TAR_OBJ_INV,		POS_STANDING,
	NULL,			SLOT(13),	 5,	12,	FALSE,
	"",			"!Create Water!"
    },

    {
	"cure blindness",	{ 20, 20, 20, 20, 2, 20 },
	spell_cure_blindness,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(14),	 5,	12,	FALSE,
	"",			"!Cure Blindness!"
    },

    {
	"cure critical",	{ 20, 20, 20, 20, 2, 20 },
	spell_cure_critical,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(15),	20,	12,	FALSE,
	"",			"!Cure Critical!"
    },

    {
	"cure light",		{ 20, 20, 20, 20, 2, 20 },
	spell_cure_light,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(16),	10,	12,     FALSE,
	"",			"!Cure Light!"
    },

    {
	"cure poison",		{ 20, 20, 20, 20, 2, 20 },
	spell_cure_poison,	TAR_CHAR_DEFENSIVE,	POS_STANDING,
	NULL,			SLOT(43),	 5,	12,     FALSE,
	"",			"!Cure Poison!"
    },

    {
	"cure serious",		{ 20, 20, 20, 20, 2, 20 },
	spell_cure_serious,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(61),	15,	12,     FALSE,
	"",			"!Cure Serious!"
    },

    {
	"curse",		{ 20, 20, 20, 20, 2, 20 },
	spell_curse,		TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	&gsn_curse,		SLOT(17),	20,	12,     FALSE,
	"curse",		"The curse wears off."
    },

    {
	"detect evil",		{ 20, 20, 20, 20, 2, 20 },
	spell_detect_evil,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(18),	 5,	12,     FALSE,
	"",			"The red in your vision disappears."
    },

    {
	"detect hidden",	{ 20, 20, 20, 20, 2, 20 },
	spell_detect_hidden,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(44),	 5,	12,     FALSE,
	"",			"You feel less aware of your suroundings."
    },

    {
	"detect invis",		{ 20, 20, 20, 20, 2, 20 },
	spell_detect_invis,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(19),	 5,	12,     FALSE,
	"",			"You no longer see invisible objects."
    },

    {
	"detect magic",		{ 20, 20, 20, 20, 2, 20 },
	spell_detect_magic,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(20),	 5,	12,     FALSE,
	"",			"The detect magic wears off."
    },

    {
	"detect poison",	{ 20, 20, 20, 20, 2, 20 },
	spell_detect_poison,	TAR_OBJ_INV,		POS_STANDING,
	NULL,			SLOT(21),	 5,	12,     FALSE,
	"",			"!Detect Poison!"
    },

    {
	"dispel evil",		{ 20, 20, 20, 20, 2, 20 },
	spell_dispel_evil,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(22),	15,	12,     FALSE,
	"dispel evil",		"!Dispel Evil!"
    },

    {
	"dispel magic",		{ 20, 20, 20, 20, 2, 20 },
	spell_dispel_magic,	TAR_CHAR_OFFENSIVE,	POS_STANDING,
	NULL,			SLOT(59),	15,	12,     FALSE,
	"",			"!Dispel Magic!"
    },

    {
	"earthquake",		{ 20, 20, 20, 20, 2, 20 },
	spell_earthquake,	TAR_IGNORE,		POS_FIGHTING,
	NULL,			SLOT(23),	15,	12,     FALSE,
	"earthquake",		"!Earthquake!"
    },

    {
	"enchant weapon",	{ 16, 16, 16, 16, 16, 16 },
	spell_enchant_weapon,	TAR_OBJ_INV,		POS_STANDING,
	NULL,			SLOT(24),	100,	4,	FALSE,
	"",			"!Enchant Weapon!"
    },

    {
	"energy drain",		{ 20, 20, 20, 20, 20, 20 },
	spell_energy_drain,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(25),	35,	12,     FALSE,
	"energy drain",		"!Energy Drain!"
    },

    {
	"faerie fire",		{ 20, 20, 20, 20, 2, 20 },
	spell_faerie_fire,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(72),	 5,	12,     FALSE,
	"faerie fire",		"The pink aura around you fades away."
    },

    {
	"faerie fog",		{ 20, 20, 20, 20, 2, 20 },
	spell_faerie_fog,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(73),	12,     12,	FALSE,
	"faerie fog",		"!Faerie Fog!"
    },

    {
	"fireball",		{ 20, 20, 20, 20, 2, 20 },
	spell_fireball,		TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(26),	15,	12,     FALSE,
	"fireball",		"!Fireball!"
    },

    {
	"flamestrike",		{ 20, 20, 20, 20, 2, 20 },
	spell_flamestrike,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(65),	20,	12,     FALSE,
	"flamestrike",		"!Flamestrike!"
    },

    {
	"fly",			{ 20, 20, 20, 20, 20, 20 },
	spell_fly,		TAR_CHAR_DEFENSIVE,	POS_STANDING,
	NULL,			SLOT(56),	10,	18,	FALSE,
	"",			"You slowly float to the ground."
    },

    {
	"gate",			{ 20, 20, 20, 20, 20, 20 },
	spell_gate,		TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(83),	50,	12,     FALSE,
	"",			"!Gate!"
    },

    {
	"giant strength",	{ 20, 20, 20, 20, 20, 20 },
	spell_giant_strength,	TAR_CHAR_DEFENSIVE,	POS_STANDING,
	NULL,			SLOT(39),	20,	12,     FALSE,
	"",			"You feel weaker."
    },

    {
	"harm",			{ 20, 20, 20, 20, 2, 20 },
	spell_harm,		TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(27),	35,	12,     FALSE,
	"harm spell",		"!Harm!"
    },

    {
	"heal",			{ 20, 20, 20, 20, 2, 20 },
	spell_heal,		TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(28),	50,	12,     FALSE,
	"",			"!Heal!"
    },

    {
	"identify",		{ 20, 20, 20, 20, 2, 20 },
	spell_identify,		TAR_OBJ_INV,		POS_STANDING,
	NULL,			SLOT(53),	12,     24,	FALSE,
	"",			"!Identify!"
    },

    {
	"infravision",		{ 20, 20, 20, 20, 2, 20 },
	spell_infravision,	TAR_CHAR_DEFENSIVE,	POS_STANDING,
	&gsn_infrared,		SLOT(77),	 5,	18,	FALSE,
	"",			"You no longer see in the dark."
    },

    {
	"invis",		{ 20, 20, 20, 20, 2, 20 },
	spell_invis,		TAR_CHAR_DEFENSIVE,	POS_STANDING,
	&gsn_invis,		SLOT(29),	 5,	12,     FALSE,
	"",			"You are no longer invisible."
    },

    {
	"know alignment",	{ 20, 20, 20, 20, 2, 20 },
	spell_know_alignment,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(58),	 9,	12,     FALSE,
	"",			"!Know Alignment!"
    },

    {
	"lightning bolt",	{ 20, 20, 20, 20, 2, 20 },
	spell_lightning_bolt,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(30),	15,	12,     FALSE,
	"lightning bolt",	"!Lightning Bolt!"
    },

    {
	"locate object",	{ 20, 20, 20, 20, 20, 20 },
	spell_locate_object,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(31),	20,	18,	FALSE,
	"",			"!Locate Object!"
    },

    {
	"magic missile",	{ 20, 20, 20, 20, 2, 20 },
	spell_magic_missile,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(32),	15,	12,     FALSE,
	"magic missile",	"!Magic Missile!"
    },

    {
	"mass invis",		{ 20, 20, 20, 20, 2, 20 },
	spell_mass_invis,	TAR_IGNORE,		POS_STANDING,
	&gsn_mass_invis,	SLOT(69),	20,	24,	FALSE,
	"",			"!Mass Invis!"
    },

    {
	"pass door",		{ 20, 20, 20, 20, 2, 20 },
	spell_pass_door,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(74),	20,	12,     FALSE,
	"",			"You feel solid again."
    },

    {
	"poison",		{ 20, 20, 20, 20, 2, 20 },
	spell_poison,		TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	&gsn_poison,		SLOT(33),	10,	12,     FALSE,
	"poison",		"You feel less sick."
    },

    {
	"protection",		{ 20, 20, 20, 20, 2, 20 },
	spell_protection,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(34),	 5,	12,     FALSE,
	"",			"You feel less protected."
    },

    {
	"refresh",		{ 20, 20, 20, 20, 2, 20 },
	spell_refresh,		TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(81),	12,     18,	FALSE,
	"refresh",		"!Refresh!"
    },

    {
	"remove curse",		{ 20, 20, 20, 20, 2, 20 },
	spell_remove_curse,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(35),	 5,	12,     FALSE,
	"",			"!Remove Curse!"
    },

    {
	"sanctuary",		{ 20, 20, 20, 20, 2, 20 },
	spell_sanctuary,	TAR_CHAR_SELF,		POS_FIGHTING,
	NULL,			SLOT(36),	75,	12,     FALSE,
	"",			"The white aura around your body fades."
    },

    {
	"shield",		{ 20, 20, 20, 20, 2, 20 },
	spell_shield,		TAR_CHAR_SELF,		POS_FIGHTING,
	NULL,			SLOT(67),	12,	18,	FALSE,
	"",			"Your force shield shimmers then fades away."
    },

    {
	"shocking grasp",	{ 20, 20, 20, 20, 2, 20 },
	spell_shocking_grasp,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(37),	15,	12,     FALSE,
	"shocking grasp",	"!Shocking Grasp!"
    },

    {
	"sleep",		{ 20, 20, 20, 20, 20, 20 },
	spell_sleep,		TAR_CHAR_OFFENSIVE,	POS_STANDING,
	&gsn_sleep,		SLOT(38),	15,	12,     FALSE,
	"",			"You feel less tired."
    },

    {
	"stone skin",		{ 20, 20, 20, 20, 2, 20 },
	spell_stone_skin,	TAR_CHAR_SELF,		POS_STANDING,
	NULL,			SLOT(66),	12,	18,	FALSE,
	"",			"Your skin feels soft again."
    },

    {
	"summon",		{ 20, 20, 20, 20, 2, 20 },
	spell_summon,		TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(40),	50,	12,     FALSE,
	"",			"!Summon!"
    },

    {
	"teleport",		{ 20, 20, 20, 20, 20, 20 },
	spell_teleport,		TAR_CHAR_SELF,		POS_FIGHTING,
	NULL,	 		SLOT( 2),	35,	12,     FALSE,
	"",			"!Teleport!"
    },

    {
	"ventriloquate",	{ 20, 20, 20, 20, 20, 20 },
	spell_ventriloquate,	TAR_IGNORE,		POS_STANDING,
	NULL,			SLOT(41),	 5,	12,     FALSE,
	"",			"!Ventriloquate!"
    },

    {
	"weaken",		{ 20, 20, 20, 20, 2, 20 },
	spell_weaken,		TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(68),	20,	12,     FALSE,
	"spell",		"You feel stronger."
    },

    {
	"word of recall",	{ 20, 20, 20, 20, 20, 20 },
	spell_word_of_recall,	TAR_CHAR_SELF,		POS_RESTING,
	NULL,			SLOT(42),	 5,	12,     FALSE,
	"",			"!Word of Recall!"
    },

/*
 * Dragon breath
 */
    {
	"acid breath",		{ 20, 20, 20, 20, 20, 20 },
	spell_acid_breath,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(200),	 0,	 4,	FALSE,
	"breathes acid on",	"!Acid Breath!"
    },

    {
	"fire breath",		{ 20, 20, 20, 20, 20, 20 },
	spell_fire_breath,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(201),	 0,	 4,	FALSE,
	"breathes flame on",	"!Fire Breath!"
    },

    {
	"frost breath",		{ 20, 20, 20, 20, 20, 20 },	
	spell_frost_breath,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(202),	 0,	 4,	FALSE,
	"breathes frost on",	"!Frost Breath!"
    },

    {
	"gas breath",		{ 20, 20, 20, 20, 20, 20 },
	spell_gas_breath,	TAR_IGNORE,		POS_FIGHTING,
	NULL,			SLOT(203),	 0,	 4,	FALSE,
	"breathes poison on",		"!Gas Breath!"
    },

    {
	"lightning breath",	{ 20, 20, 20, 20, 20, 20 },
	spell_lightning_breath,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(204),	 0,	 4,	FALSE,
	"breathes poison on",	"!Lightning Breath!"
    },

/*
 * Fighter and thief skills.
 */
    {
        "awareness",            {  1, 1, 1, 1, 1, 1 }, 
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_awareness,          SLOT( 0),        0,      0,	FALSE,
        "",                     "!Awareness!"
    },

    {
	"backstab",		{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_backstab,		SLOT( 0),	 0,	4,	FALSE,
	"backstab",		"!Backstab!"
    },

    {
	"disarm",		{ 37, 37, 37, 37, 37, 37 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_disarm,		SLOT( 0),	 0,	24,	FALSE,
	"",			"!Disarm!"
    },

    {
	"dodge",		{ 37, 37, 37, 37, 37, 37 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_dodge,		SLOT( 0),	 0,	 0,	FALSE,
	"",			"!Dodge!"
    },

    {
	"enhanced damage",	{ 37, 37, 37, 37, 37, 37 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_enhanced_damage,	SLOT( 0),	 0,	 0,	FALSE,
	"",			"!Enhanced Damage!"
    },

    {
	"hide",			{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_RESTING,
	&gsn_hide,		SLOT( 0),	 0,	12,     FALSE,
	"",			"!Hide!"
    },

    {
	"kick",			{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	&gsn_kick,		SLOT( 0),	 0,	 8,	FALSE,
	"kick",			"!Kick!"
    },

    {
	"parry",		{ 37, 37, 37, 37, 37, 37 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_parry,		SLOT( 0),	 0,	 0,	FALSE,
	"",			"!Parry!"
    },

    {
	"peek",			{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_STANDING,
	&gsn_peek,		SLOT( 0),	 0,	 0,	FALSE,
	"",			"!Peek!"
    },

    {
	"pick lock",		{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_STANDING,
	&gsn_pick_lock,		SLOT( 0),	 0,	12,     FALSE,
	"",			"!Pick!"
    },

    {
	"rescue",		{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_rescue,		SLOT( 0),	 0,	12,     FALSE,
	"",			"!Rescue!"
    },

    {
	"second attack",	{ 37, 37, 37, 37, 37, 37 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_second_attack,	SLOT( 0),	 0,	 0,	FALSE,
	"",			"!Second Attack!"
    },

    {
	"sneak",		{  2, 2, 2, 2, 2, 2 },
	spell_null,		TAR_IGNORE,		POS_STANDING,
	&gsn_sneak,		SLOT( 0),	 0,	12,     FALSE,
	"",			NULL
    },

    {
	"steal",		{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_STANDING,
	&gsn_steal,		SLOT( 0),	 0,	24,	FALSE,
	"",			"!Steal!"
    },

    {
	"third attack",		{ 37, 37, 37, 37, 37, 37 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_third_attack,	SLOT( 0),	 0,	 0,	FALSE,
	"",			"!Third Attack!"
    },

    {
	"whirl",		{  1, 1, 1, 1, 1, 1 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	&gsn_whirl,		SLOT(0),	0,	24,	FALSE,
	"whirlwind attack",	"!Whirl!"
    },

/*
 *  Spells for mega1.are from Glop/Erkenbrand.
*/
    {
        "general purpose",      { 37, 37, 37, 37, 37, 37 },
	spell_general_purpose,  TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
	NULL,                   SLOT(205),      0,      12,     FALSE,
	"machine guns", "!General Purpose Ammo!"
    },

    {
        "high explosive",       { 37, 37, 37, 37, 37, 37 },
	spell_high_explosive,   TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
	NULL,                   SLOT(206),      0,      12,     FALSE,
	"shotguns",  "!High Explosive Ammo!"
    },

    {
    	"chaos strings",	{ 20, 20, 20, 20, 20, 20 },
	spell_null,		TAR_IGNORE,		POS_FIGHTING,
	NULL,			SLOT(0),	0,	12,     FALSE,
	"chaos strings",	"The strings disentegrate and fall away."
    },

    {
    	"visfarank",		{ 37, 37, 37, 37, 37, 37 },
    	spell_null,		TAR_IGNORE,		POS_FIGHTING,
    	NULL,			SLOT(0),	0,	12,     FALSE,
    	"visfarank",		"Your magical boxing gloves dissipate."
    },

    {
    	"vas gluudo",		{37, 37, 37, 37, 37, 37 },
    	spell_null,		TAR_IGNORE,		POS_FIGHTING,
    	NULL,			SLOT(0),	0,	12,     FALSE,
    	"vas gluudo",		"The energy shield encasing you evaporates."
    },

    {
    	"laphas seed",		{ 21, 21, 21, 21, 21, 21 },
    	spell_null,		TAR_IGNORE,		POS_FIGHTING,
    	NULL,			SLOT(0),	0,	12,     FALSE,
    	"laphas seed",		"The bands of energy dissolve."
    },

    {
    	"holy resist",		{ 21, 21, 21, 21, 21, 21 },
    	spell_null,		TAR_IGNORE,		POS_FIGHTING,
    	NULL,			SLOT(0),	0,	12,     FALSE,
    	"holy resist",		"Your holy barrier collapses."
    },

    {
        "mos varim",            { 21, 21, 21, 21, 21, 21 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_mos_varim,         SLOT(0),        0,      12,     FALSE,
        "mos varim",            "The flourescent ball hovering above you winks out."
    },

    {
        "windy shield",          { 21, 21, 21, 21, 21, 21 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        NULL,                   SLOT(0),        0,      12,     FALSE,
        "windy shield",          "The wind stops swirling around you."
    },

    {
        "portal",               { 20, 20, 20, 20, 2, 20 },
        spell_portal,           TAR_IGNORE,             POS_STANDING,
        NULL,                   SLOT(207),      500,    12,     FALSE,
        "!portal!",             "!portal!"
    },

    {
        "dynast breath",          { 21, 21, 21, 21, 21, 21 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        NULL,                   SLOT(0),        0,      12,     FALSE,
        "dynast breath",          "The ice encasing you melts away."
    },

    {
    	"henshin",		{ 20, 20, 20, 20, 20, 20 },
    	spell_null,		TAR_IGNORE,		POS_FIGHTING,
    	NULL,			SLOT(0),	0,	12,     FALSE,
    	"henshin",		"Your sailor fuku vanishes and your normal clothes appear."
    },

    {
        "flame breath",		{ 20, 20, 20, 20, 20, 20 },
        spell_null,		TAR_IGNORE,		POS_FIGHTING,
        NULL,			SLOT(0),	0,	12,    TRUE, 
        "flame breath",		"$n stops burning."
    },

    {
        "negative ward",        { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_negative_ward,     SLOT(0),        0,      12,	TRUE,
        "negative ward",        "The dome of obsidian energy above $n fades away."
    },

    {
        "earth ward",           { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_earth_ward,        SLOT(0),        0,      12,     TRUE,
        "earth ward",           "The dome of verdant energy above $n fades away."
    },

    {
        "wind ward",            { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_wind_ward,         SLOT(0),        0,      12,     TRUE,
        "wind ward",            "The dome of azure energy above $n fades away."
    },

    {
        "flame ward",           { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_flame_ward,        SLOT(0),        0,      12,     TRUE,
        "flame ward",           "The dome of crimson energy above $n fades away."
    },

    {
        "water ward",           { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_water_ward,        SLOT(0),        0,      12,     TRUE,
        "water ward",           "The dome of sea green energy above $n fades away."
    },

    {
        "spirit ward",          { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_spirit_ward,       SLOT(0),        0,      12,     TRUE,
        "spirit ward",          "The dome of pale white energy above $n fades away."
    },

    {
        "ki wall",		{ 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_kiwall,		SLOT(0),        0,      12,     TRUE,
        "ki wall",		"The wall of energy around $n dissipates."
    },

    {
        "wind curse",           { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_wind_curse,        SLOT(0),        0,      12,     TRUE,
        "wind curse",           "The pale blue mist surrounding $n lifts."
    },

    {
        "earth curse",          { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_earth_curse,       SLOT(0),        0,      12,     TRUE,
        "earth curse",          "The dull yellow mist surrounding $n lifts."
    },

    {
        "flame curse",          { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_flame_curse,       SLOT(0),        0,      12,     TRUE,
        "flame curse",          "The blood red mist surrounding $n lifts."
    },

    {
        "water curse",          { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_water_curse,       SLOT(0),        0,      12,     TRUE,
        "water curse",          "The murky mist surrounding $n lifts."
    },

    {
        "balus wall",          { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_balus_wall,       SLOT(0),        0,      12,     FALSE,
        "balus wall",          "Your balus wall flickers a few times and vanishes."
    },

    {
        "defense",		{ 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_defense,		SLOT(0),        0,      12,     FALSE,
        "defense",		"Your defensive barrier drops."
    },

    {
        "kaiouken",        	{ 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_kaiouken,   	SLOT(0),        0,      12,     FALSE,
        "kaiouken",     	"The crimson flames flicker and vanish."
    },

    {
        "golden blaze",             { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_golden_blaze,          SLOT(0),        0,      12,     FALSE,
        "golden blaze",             "Your fists return to normal."
    },

    {
        "judicators ire",             { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_judicators_ire,          SLOT(0),        0,      12,     FALSE,
        "judicator's ire",             "Your fists return to normal."
    },

    {
        "dark blaze",             { 20, 20, 20, 20, 20, 20 },
        spell_null,             TAR_IGNORE,             POS_FIGHTING,
        &gsn_dark_blaze,          SLOT(0),        0,      12,     FALSE,
        "dark blaze",             "Your fists return to normal."
    },

    /*
     * Spells for materia.
     */

    {
	"fire",		{ 20, 20, 20, 20, 20, 20 },
	spell_fire,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(101),	35,	12,     FALSE,
	"burns",		"!fire!"
    },

    {
	"fire2",		{ 20, 20, 20, 20, 20, 20 },
	spell_fire2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(102),	35,	12,     FALSE,
	"burns",		"!fire!"
    },

    {
	"fire3",		{ 20, 20, 20, 20, 20, 20 },
	spell_fire3,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(103),	35,	12,     FALSE,
	"burns",		"!fire!"
    },

    {
	"ice",		{ 20, 20, 20, 20, 20, 20 },
	spell_ice,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(104),	35,	12,     FALSE,
	"freezes",		"!ice!"
    },

    {
	"ice2",		{ 20, 20, 20, 20, 20, 20 },
	spell_ice2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(105),	35,	12,     FALSE,
	"freezes",		"!ice!"
    },

    {
	"ice3",		{ 20, 20, 20, 20, 20, 20 },
	spell_ice3,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(106),	35,	12,     FALSE,
	"freezes",		"!ice!"
    },

    {
	"bolt",		{ 20, 20, 20, 20, 20, 20 },
	spell_bolt,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(107),	35,	12,     FALSE,
	"shocks",		"!bolt!"
    },

    {
	"bolt2",		{ 20, 20, 20, 20, 20, 20 },
	spell_bolt2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(108),	35,	12,     FALSE,
	"shocks",		"!bolt!"
    },

    {
	"bolt3",		{ 20, 20, 20, 20, 20, 20 },
	spell_bolt3,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(109),	35,	12,     FALSE,
	"shocks",		"!bolt!"
    },

    {
	"cure",		{ 20, 20, 20, 20, 20, 20 },
	spell_cure,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(110),	35,	12,     FALSE,
	"heals",		"!cure!"
    },

    {
	"cure2",		{ 20, 20, 20, 20, 20, 20 },
	spell_cure2,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(111),	35,	12,     FALSE,
	"heals",		"!cure!"
    },

    {
	"regen",		{ 20, 20, 20, 20, 20, 20 },
	spell_regen,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(112),	35,	12,     FALSE,
	"heals",		"!cure!"
    },

    {
	"cure3",		{ 20, 20, 20, 20, 20, 20 },
	spell_cure3,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(113),	35,	12,     FALSE,
	"heals",		"!cure!"
    },

    {
	"quake",		{ 20, 20, 20, 20, 20, 20 },
	spell_quake,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(114),	35,	12,     FALSE,
	"smashes",		"!quake!"
    },

    {
	"quake2",		{ 20, 20, 20, 20, 20, 20 },
	spell_quake2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(115),	35,	12,     FALSE,
	"smashes",		"!quake!"
    },

    {
	"quake3",		{ 20, 20, 20, 20, 20, 20 },
	spell_quake3,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(116),	35,	12,     FALSE,
	"smashes",		"!quake!"
    },

    {
	"bio",		{ 20, 20, 20, 20, 20, 20 },
	spell_bio,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(117),	35,	12,     FALSE,
	"poisons",		"!poison!"
    },

    {
	"bio2",		{ 20, 20, 20, 20, 20, 20 },
	spell_bio2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(118),	35,	12,     FALSE,
	"poisons",		"!poison!"
    },

    {
	"bio3",		{ 20, 20, 20, 20, 20, 20 },
	spell_bio3,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(119),	35,	12,     FALSE,
	"poisons",		"!poison!"
    },

    {
	"poisona",		{ 20, 20, 20, 20, 20, 20 },
	spell_poisona,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(120),	35,	12,     FALSE,
	"cures",		"!poisona!"
    },

    {
	"esuna",		{ 20, 20, 20, 20, 20, 20 },
	spell_esuna,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(121),	35,	12,     FALSE,
	"cures",		"!esuna!"
    },

    {
	"resist",		{ 20, 20, 20, 20, 20, 20 },
	spell_resist,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(122),	35,	12,     FALSE,
	"protects",		"You feel less resistant to afflictions."
    },

    {
	"life",		{ 20, 20, 20, 20, 20, 20 },
	spell_life,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(123),	35,	12,     FALSE,
	"revives",		"!life!"
    },

    {
	"life2",		{ 20, 20, 20, 20, 20, 20 },
	spell_life2,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(124),	35,	12,     FALSE,
	"revives",		"!life!"
    },

    {
	"barrier",		{ 20, 20, 20, 20, 20, 20 },
	spell_barrier,	TAR_CHAR_SELF,	POS_FIGHTING,
	NULL,			SLOT(125),	35,	12,     FALSE,
	"barriers",		"The protective barrier disappears."
    },


    {
	"shell",		{ 20, 20, 20, 20, 20, 20 },
	spell_shell,	TAR_CHAR_SELF,	POS_FIGHTING,
	NULL,			SLOT(126),	35,	12,     FALSE,
	"shells",		"The protective shell vanishes."
    },


    {
	"reflect",		{ 20, 20, 20, 20, 20, 20 },
	spell_reflect,	TAR_CHAR_SELF,	POS_FIGHTING,
	NULL,			SLOT(127),	35,	12,     FALSE,
	"reflects",		"The reflective shield fades away."
    },

    {
	"wall",		{ 20, 20, 20, 20, 20, 20 },
	spell_wall,	TAR_CHAR_SELF,	POS_FIGHTING,
	NULL,			SLOT(128),	35,	12,     FALSE,
	"walls",		"The guardian wall fades and vanishes."
    },

    {
	"sleepel",		{ 20, 20, 20, 20, 20, 20 },
	spell_sleepel,	TAR_CHAR_DEFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(129),	35,	12,     FALSE,
	"sleeps",		"You feel a little less tired."
    },

    {
	"haste",		{ 20, 20, 20, 20, 20, 20 },
	spell_haste,	TAR_CHAR_SELF,	POS_FIGHTING,
	NULL,			SLOT(130),	35,	12,     FALSE,
	"hastes",		"You slow down."
    },

    {
	"slow",		{ 20, 20, 20, 20, 20, 20 },
	spell_slow,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(131),	35,	12,     FALSE,
	"slows",		"Your movements speed up."
    },

    {
	"stop",		{ 20, 20, 20, 20, 20, 20 },
	spell_stop,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(132),	35,	12,     FALSE,
	"stops",		"You break free of the paralysis."
    },

    {
	"demi",		{ 20, 20, 20, 20, 20, 20 },
	spell_demi,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(133),	35,	12,     FALSE,
	"compacts",		"!demi!"
    },

    {
	"demi2",		{ 20, 20, 20, 20, 20, 20 },
	spell_demi2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(134),	35,	12,     FALSE,
	"compacts",		"!demi!"
    },

    {
	"demi3",		{ 20, 20, 20, 20, 20, 20 },
	spell_demi3,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(135),	35,	12,     FALSE,
	"compactss",		"!demi!"
    },

    {
	"debarrier",		{ 20, 20, 20, 20, 20, 20 },
	spell_debarrier,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(136),	35,	12,     FALSE,
	"debarriers",		"!debarrier!"
    },

    {
	"despell",		{ 20, 20, 20, 20, 20, 20 },
	spell_despell,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(137),	35,	12,     FALSE,
	"despells",		"!despell!"
    },

    {
	"death",		{ 20, 20, 20, 20, 20, 20 },
	spell_death,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(138),	35,	12,     FALSE,
	"kills",		"!death!"
    },

    {
	"comet",		{ 20, 20, 20, 20, 20, 20 },
	spell_comet,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(139),	35,	12,     FALSE,
	"impacts",		"!comet!"
    },

    {
	"comet2",		{ 20, 20, 20, 20, 20, 20 },
	spell_comet2,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(140),	35,	12,     FALSE,
	"impacts",		"!comet2!"
    },

    {
	"freeze",		{ 20, 20, 20, 20, 20, 20 },
	spell_freeze,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(141),	35,	12,     FALSE,
	"deep freezes",		"!freeze!"
    },

    {
	"break",		{ 20, 20, 20, 20, 20, 20 },
	spell_break,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(142),	35,	12,     FALSE,
	"breaks",		"!break!"
    },

    {
	"tornado",		{ 20, 20, 20, 20, 20, 20 },
	spell_tornado,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(143),	35,	12,     FALSE,
	"tears at",		"!tornado!"
    },

    {
	"flare",		{ 20, 20, 20, 20, 20, 20 },
	spell_flare,	TAR_CHAR_OFFENSIVE,	POS_FIGHTING,
	NULL,			SLOT(144),	35,	12,     FALSE,
	"incinerates",		"!flare!"
    },

    {
	"ultima",		{ 20, 20, 20, 20, 20, 20 },
	spell_ultima,	TAR_IGNORE,	POS_FIGHTING,
	NULL,			SLOT(145),	35,	12,     FALSE,
	"annihilates",		"!ultima!"
    }

};