/*
 * static char *rcsid_spells_h =
 *   "$Id: spells.h,v 1.27 1997/02/04 10:39:38 master Exp $";
 */

/*
    CrossFire, A Multiplayer game for X-windows

    Copyright (C) 1992 Frank Tore Johansen

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

    The author can be reached via e-mail to mark@pyramid.com.
*/

extern Fontindex fbface[];
extern Fontindex lface[];
extern Fontindex  mmface[];
extern int turn_bonus[];
extern int fear_bonus[];
extern int cleric_chance[];

extern spell spells[NROFREALSPELLS];

/* When adding new spells, don't insert into the middle of the list - 
 * add to the end of the list.  Some archetypes and treasures require
 * the spell numbers to be as they are.
 */

enum spellnrs {
  SP_BULLET,	      SP_S_FIREBALL,	     SP_M_FIREBALL,	/*0*/
  SP_L_FIREBALL,      SP_BURNING_HANDS,

  SP_S_LIGHTNING,     SP_L_LIGHTNING,	     SP_M_MISSILE,	/*5*/
  SP_BOMB,	      SP_GOLEM,

  SP_FIRE_ELEM,	      SP_EARTH_ELEM,	     SP_WATER_ELEM,	/*10*/
  SP_AIR_ELEM,	      SP_D_DOOR,	     

  SP_EARTH_WALL,      SP_PARALYZE,	     SP_ICESTORM,	/*15*/
  SP_MAGIC_MAPPING,   SP_TURN_UNDEAD,

  SP_FEAR,	      SP_POISON_CLOUD,	     SP_WOW,		/*20*/
  SP_DESTRUCTION,     SP_PERCEIVE,	     

  SP_WOR,	      SP_INVIS,		     SP_INVIS_UNDEAD,	/*25*/
  SP_PROBE,	      SP_LARGE_BULLET,	     

  SP_IMPROVED_INVIS,  SP_HOLY_WORD,	     SP_MINOR_HEAL,	/*30*/
  SP_MED_HEAL,	      SP_MAJOR_HEAL,

  SP_HEAL,	      SP_CREATE_FOOD,	     SP_EARTH_DUST,	/*35*/
  SP_ARMOUR,	      SP_STRENGTH,

  SP_DEXTERITY,	      SP_CONSTITUTION,	     SP_CHARISMA,	/*40*/
  SP_FIRE_WALL,	      SP_FROST_WALL,

  SP_PROT_COLD,	      SP_PROT_ELEC,	     SP_PROT_FIRE,	/*45*/
  SP_PROT_POISON,     SP_PROT_SLOW,

  SP_PROT_PARALYZE,   SP_PROT_DRAIN,	     SP_PROT_MAGIC,	/*50*/
  SP_PROT_ATTACK,     SP_LEVITATE,

  SP_SMALL_SPEEDBALL, SP_LARGE_SPEEDBALL,    SP_HELLFIRE,	/*55*/
  SP_FIREBREATH,      SP_LARGE_ICESTORM,

  SP_CHARGING,		SP_POLYMORPH,		SP_CANCELLATION, /*60*/
  SP_CONFUSION,		SP_MASS_CONFUSION,

  SP_PET,		SP_SLOW,		SP_REGENERATE_SPELLPOINTS,  /*65*/
  SP_CURE_POISON,	SP_PROT_CONFUSE,

  SP_PROT_CANCEL,	SP_PROT_DEPLETE,	SP_ALCHEMY,	/*70*/
  SP_REMOVE_CURSE,	SP_REMOVE_DAMNATION,	

  SP_IDENTIFY,		SP_DETECT_MAGIC,	SP_DETECT_MONSTER,  /* 75 */
  SP_DETECT_EVIL,	SP_DETECT_CURSE,	

  SP_HEROISM,		SP_AGGRAVATION,		SP_FIREBOLT,  		/* 80 */
  SP_FROSTBOLT,		SP_SHOCKWAVE,

  SP_COLOR_SPRAY,	SP_HASTE,		SP_FACE_OF_DEATH,	/*85*/
  SP_BALL_LIGHTNING,	SP_METEOR_SWARM,

  SP_METEOR,		SP_MYSTIC_FIST,		SP_RAISE_DEAD,		/*90*/
  SP_RESURRECTION,	SP_REINCARNATION,     

/* mlee's spells*/	

  SP_IMMUNE_COLD,	SP_IMMUNE_ELEC,		SP_IMMUNE_FIRE,		/*95*/
  SP_IMMUNE_POISON,	SP_IMMUNE_SLOW,


  SP_IMMUNE_PARALYZE,	SP_IMMUNE_DRAIN,	SP_IMMUNE_MAGIC,	/*100*/
  SP_IMMUNE_ATTACK,	SP_INVULNERABILITY,

  SP_PROTECTION,							/*105*/
        /*Some more new spells by peterm */
			SP_RUNE_FIRE,		SP_RUNE_FROST,		
  SP_RUNE_SHOCK,	SP_RUNE_BLAST,

  SP_RUNE_DEATH,	SP_RUNE_MARK,		SP_BUILD_DIRECTOR,	/*110*/
  SP_CHAOS_POOL,	SP_BUILD_BWALL,

  SP_BUILD_LWALL,	SP_BUILD_FWALL,		SP_RUNE_MAGIC,		/*115*/
  SP_RUNE_DRAINSP,	SP_RUNE_ANTIMAGIC,

  SP_RUNE_TRANSFER,	SP_TRANSFER,		SP_MAGIC_DRAIN,		/*120*/
  SP_COUNTER_SPELL,	SP_DISPEL_RUNE,

  SP_CURE_CONFUSION,	SP_RESTORATION,		SP_SUMMON_EVIL_MONST,	/*125*/
  SP_COUNTERWALL,	SP_CAUSE_LIGHT,

  SP_CAUSE_MEDIUM,	SP_CAUSE_HEAVY,		SP_CHARM,		/*130*/
  SP_BANISHMENT,	SP_CREATE_MISSILE,

  SP_SHOW_INVIS,	SP_XRAY,		SP_PACIFY,		/*135*/
  SP_SUMMON_FOG,	SP_STEAMBOLT,

  /* lots of new cleric spells, many need MULTIPLE_GODS defined to be
   * very usefull - b.t. */
  SP_COMMAND_UNDEAD,	SP_HOLY_ORB,		SP_SUMMON_AVATAR,	/*140*/
  SP_HOLY_POSSESSION,	SP_BLESS,		

  SP_CURSE, 		SP_REGENERATION,	SP_CONSECRATE,		/*145*/
  SP_SUMMON_CULT,	SP_CAUSE_CRITICAL, 

  SP_HOLY_WRATH,	SP_RETRIBUTION,		SP_FINGER_DEATH,	/*150*/
  SP_INSECT_PLAGUE,	SP_HOLY_SERVANT,
  
  SP_WALL_OF_THORNS,	SP_STAFF_TO_SNAKE,	SP_LIGHT,	  	/*155*/
  SP_DARKNESS,		SP_NIGHTFALL,

  SP_DAYLIGHT,		SP_SUNSPEAR,		SP_FAERY_FIRE, 		/*160*/
  SP_CURE_BLINDNESS,	SP_DARK_VISION,

  SP_BULLET_SWARM,      SP_BULLET_STORM,        SP_CAUSE_MANY,  /* 165 */
  SP_S_SNOWSTORM, SP_M_SNOWSTORM,

  SP_L_SNOWSTORM

};


#define IS_SUMMON_SPELL(spell) (((spell) > SP_BOMB && (spell) < SP_D_DOOR) \
	|| ((spell) == SP_MYSTIC_FIST) || ((spell) == SP_SUMMON_AVATAR) \
	|| ((spell) == SP_HOLY_SERVANT))

#define PATH_SP_MULT(op,spell) (((op->path_attuned & s->path) ? 0.8 : 1) * \
				((op->path_repelled & s->path) ? 1.25 : 1))
#define PATH_TIME_MULT(op,spell) (((op->path_attuned & s->path) ? 0.8 : 1) * \
				((op->path_repelled & s->path) ? 1.25 : 1))
	
extern char *range_name[range_size];
extern spell_parameters SP_PARAMETERS[];
extern char *spellpathnames[NRSPELLPATHS];
extern archetype *spellarch[NROFREALSPELLS];
