ackmud/area/boards/
ackmud/area/imc/
ackmud/npcs/a/
ackmud/npcs/c/
ackmud/npcs/d/
ackmud/npcs/e/
ackmud/npcs/f/
ackmud/npcs/h/
ackmud/npcs/i/
ackmud/npcs/k/
ackmud/npcs/l/
ackmud/npcs/n/
ackmud/npcs/o/
ackmud/npcs/p/
ackmud/npcs/r/
ackmud/npcs/s/
ackmud/npcs/w/
ackmud/player/c/
/***************************************************************************
 *  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.                              *
 *                                                                         *
 *  Ack 2.2 improvements copyright (C) 1994 by Stephen Dooley              *
 *                                                                         *
 *  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.                                               *
 *                                                                         *
 *       _/          _/_/_/     _/    _/     _/    ACK! MUD is modified    *
 *      _/_/        _/          _/  _/       _/    Merc2.0/2.1/2.2 code    *
 *     _/  _/      _/           _/_/         _/    (c)Stephen Zepp 1998    *
 *    _/_/_/_/      _/          _/  _/             Version #: 4.3          *
 *   _/      _/      _/_/_/     _/    _/     _/                            *
 *                                                                         *
 *                        http://ackmud.nuc.net/                           *
 *                        zenithar@ackmud.nuc.net                          *
 *  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.                                                  *
 ***************************************************************************/

#ifndef DEC_ACK_H
#include "ack.h"
#endif

#define DEC_MAGIC_H

#ifndef DEC_MONEY_H
#include "money.h"
#endif

bool sp_damage( OBJ_DATA * obj, CHAR_DATA *ch, CHAR_DATA *victim, int dam, int type, int sn, bool show_msg );
void    group_gain      args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
bool    is_safe         args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
void    set_fighting    args( ( CHAR_DATA *ch, CHAR_DATA *victim, bool check ) );
void	  check_adrenaline args( ( CHAR_DATA *ch, sh_int damage ) );

/* magic.c */
int mana_cost( CHAR_DATA * ch, int sn);


#define REALM_NONE    	  BIT_0
#define REALM_FIRE		    BIT_1
#define REALM_SHOCK		    BIT_2
#define REALM_LIGHT		    BIT_3
#define REALM_GAS		      BIT_4
#define REALM_POISON	    BIT_5
#define REALM_COLD		    BIT_6
#define REALM_SOUND		    BIT_7
#define REALM_ACID		    BIT_8
#define REALM_DRAIN       BIT_9
#define REALM_IMPACT      BIT_10
#define REALM_MIND        BIT_11
#define REALM_HOLY        BIT_12
#define NO_REFLECT        BIT_30
#define NO_ABSORB          BIT_31


#define RE_NONE    	  0
#define RE_FIRE		    1
#define RE_SHOCK		    2
#define RE_LIGHT		    3
#define RE_GAS		      4
#define RE_POISON	    5
#define RE_COLD		    6
#define RE_SOUND		    7
#define RE_ACID		    8
#define RE_DRAIN       9
#define RE_IMPACT      10
#define RE_MIND        11
#define RE_HOLY        12



struct sp_dam_str_type
{
  int   realm;
  char *basecol;
  char *invertcol;
  char *stresscol;
  char *backcol;
  char *formatter;
  char * vs;
  char * vs_stress;
  char * vp;
  char * vp_stress;
};

extern struct sp_dam_str_type sp_dam_str[];
extern bool deathmatch;
#define MAX_REALM 13

/*
 * Spell functions.
 * Defined in magicX.c.
 */
DECLARE_SPELL_FUN(      spell_null              );

DECLARE_SPELL_FUN(	spell_ego_whip		);
DECLARE_SPELL_FUN(	spell_physic_thrust	);
DECLARE_SPELL_FUN(	spell_physic_crush	);
DECLARE_SPELL_FUN(	spell_mind_flail	);

DECLARE_SPELL_FUN(      spell_acid_blast        );
DECLARE_SPELL_FUN(	spell_animate		);
DECLARE_SPELL_FUN(      spell_armor             );
DECLARE_SPELL_FUN(      spell_badbreath         );
DECLARE_SPELL_FUN(	spell_bark_skin		);
DECLARE_SPELL_FUN(      spell_bless             );
DECLARE_SPELL_FUN(      spell_blindness         );
DECLARE_SPELL_FUN(	spell_bloody_tears	);
DECLARE_SPELL_FUN(      spell_burning_hands     );
DECLARE_SPELL_FUN(      spell_call_lightning    );
DECLARE_SPELL_FUN(	spell_calm		);
DECLARE_SPELL_FUN(      spell_cause_critical    );
DECLARE_SPELL_FUN(      spell_cause_light       );
DECLARE_SPELL_FUN(      spell_cause_serious     );
DECLARE_SPELL_FUN(      spell_change_sex        );
DECLARE_SPELL_FUN(      spell_charm_person      );
DECLARE_SPELL_FUN(      spell_chill_touch       );
DECLARE_SPELL_FUN(      spell_color_spray      );
DECLARE_SPELL_FUN(      spell_continual_light   );
DECLARE_SPELL_FUN(      spell_control_weather   );
DECLARE_SPELL_FUN(      spell_create_food       );
DECLARE_SPELL_FUN(      spell_create_spring     );
DECLARE_SPELL_FUN(      spell_create_water      );
DECLARE_SPELL_FUN(      spell_cure_blindness    );
DECLARE_SPELL_FUN(      spell_cure_critical     );
DECLARE_SPELL_FUN(      spell_cure_light        );
DECLARE_SPELL_FUN(      spell_cure_poison       );
DECLARE_SPELL_FUN(      spell_cure_serious      );
DECLARE_SPELL_FUN(      spell_curse             );
DECLARE_SPELL_FUN(      spell_detect_evil       );
DECLARE_SPELL_FUN(      spell_detect_hidden     );
DECLARE_SPELL_FUN(      spell_detect_invis      );
DECLARE_SPELL_FUN(      spell_detect_magic      );
DECLARE_SPELL_FUN(      spell_detect_poison     );
DECLARE_SPELL_FUN(	spell_detect_undead	);
DECLARE_SPELL_FUN(	spell_detection		);
DECLARE_SPELL_FUN(	spell_dimension_blade	);
DECLARE_SPELL_FUN(      spell_dispel_evil       );
DECLARE_SPELL_FUN(      spell_dispel_magic      );
DECLARE_SPELL_FUN(      spell_earthquake        );
DECLARE_SPELL_FUN(      spell_enchant_weapon    );
DECLARE_SPELL_FUN(      spell_encumber          );
DECLARE_SPELL_FUN(	spell_enhance_weapon    );
DECLARE_SPELL_FUN(      spell_energy_drain      );
DECLARE_SPELL_FUN(      spell_faerie_fire       );
DECLARE_SPELL_FUN(      spell_faerie_fog        );
DECLARE_SPELL_FUN(	spell_fighting_trance	);
DECLARE_SPELL_FUN(      spell_fireball          );
DECLARE_SPELL_FUN(	spell_fire_blade	);
DECLARE_SPELL_FUN(      spell_flamestrike       );
DECLARE_SPELL_FUN(      spell_fly               );
DECLARE_SPELL_FUN(      spell_gate              );
DECLARE_SPELL_FUN(      spell_general_purpose   );
DECLARE_SPELL_FUN(      spell_giant_strength    );
DECLARE_SPELL_FUN(      spell_harm              );
DECLARE_SPELL_FUN(      spell_heal              );
DECLARE_SPELL_FUN(      spell_high_explosive    );
DECLARE_SPELL_FUN(	spell_hypnosis		);
DECLARE_SPELL_FUN(      spell_identify          );
DECLARE_SPELL_FUN(      spell_influx            );
DECLARE_SPELL_FUN(      spell_infravision       );
DECLARE_SPELL_FUN(      spell_invis             );
DECLARE_SPELL_FUN(      spell_know_alignment    );
DECLARE_SPELL_FUN(	spell_know_weakness	);
DECLARE_SPELL_FUN(	spell_know_critical	);
DECLARE_SPELL_FUN(	spell_know_item		);
DECLARE_SPELL_FUN(      spell_lightning_bolt    );
DECLARE_SPELL_FUN(      spell_locate_object     );
DECLARE_SPELL_FUN(      spell_magic_missile     );
DECLARE_SPELL_FUN(      spell_mass_invis        );
DECLARE_SPELL_FUN(	spell_mind_bolt		);
DECLARE_SPELL_FUN(      spell_nerve_fire	);
DECLARE_SPELL_FUN(      spell_night_vision	);
DECLARE_SPELL_FUN(      spell_pass_door         );
DECLARE_SPELL_FUN(	spell_phase		);
DECLARE_SPELL_FUN(      spell_poison            );
DECLARE_SPELL_FUN(	spell_produce_food	);
DECLARE_SPELL_FUN(      spell_protection        );
DECLARE_SPELL_FUN(      spell_refresh           );
DECLARE_SPELL_FUN(      spell_remove_curse      );
DECLARE_SPELL_FUN(      spell_sanctuary         );
DECLARE_SPELL_FUN(	spell_see_magic		);
DECLARE_SPELL_FUN(	spell_sense_evil	);
DECLARE_SPELL_FUN(      spell_shocking_grasp    );
DECLARE_SPELL_FUN(      spell_shield            );
DECLARE_SPELL_FUN(      spell_sleep             );
DECLARE_SPELL_FUN(	spell_stalker		);
DECLARE_SPELL_FUN(      spell_stone_skin        );
DECLARE_SPELL_FUN(	spell_suffocate		);
DECLARE_SPELL_FUN(      spell_summon            );
DECLARE_SPELL_FUN(      spell_teleport          );
DECLARE_SPELL_FUN(      spell_ventriloquate     );
DECLARE_SPELL_FUN(      spell_warcry            );  /* --Stephen */
DECLARE_SPELL_FUN(      spell_weaken            );
DECLARE_SPELL_FUN(	spell_window		);
DECLARE_SPELL_FUN(	spell_portal		);
DECLARE_SPELL_FUN(	spell_beacon		);
DECLARE_SPELL_FUN(      spell_word_of_recall    );
DECLARE_SPELL_FUN(      spell_acid_breath       );
DECLARE_SPELL_FUN(      spell_fire_breath       );
DECLARE_SPELL_FUN(      spell_frost_breath      );
DECLARE_SPELL_FUN(      spell_gas_breath        );
DECLARE_SPELL_FUN(      spell_lightning_breath  );
DECLARE_SPELL_FUN( spell_planergy               );
DECLARE_SPELL_FUN( spell_static                 );
DECLARE_SPELL_FUN( spell_visit                  );
DECLARE_SPELL_FUN( spell_chain_lightning        );
DECLARE_SPELL_FUN( spell_phobia                 );
DECLARE_SPELL_FUN( spell_barrier                );
DECLARE_SPELL_FUN( spell_mindflame              );
DECLARE_SPELL_FUN( spell_laserbolt		);
DECLARE_SPELL_FUN( spell_hellspawn		);
DECLARE_SPELL_FUN( spell_travel			);
DECLARE_SPELL_FUN( spell_flare			);
DECLARE_SPELL_FUN( spell_mystic_armor		);
DECLARE_SPELL_FUN( spell_blood_leach		);
DECLARE_SPELL_FUN( spell_seal_room		);
DECLARE_SPELL_FUN( spell_shade			); /* Slot 542 */
DECLARE_SPELL_FUN( spell_deflect_weapon         ); /* slot 600 */
DECLARE_SPELL_FUN( spell_black_hand             ); /* slot 601 */
DECLARE_SPELL_FUN( spell_throw_needle           ); /* slot 602 */
DECLARE_SPELL_FUN( spell_morale                 ); /* slot 603 */
DECLARE_SPELL_FUN( spell_leadership             ); /* slot 604 */
DECLARE_SPELL_FUN( spell_ice_bolt               ); /* slot 605 */
DECLARE_SPELL_FUN( spell_waterelem              ); /* slot 606 */
DECLARE_SPELL_FUN( spell_skeleton               ); /* slot 607 */
DECLARE_SPELL_FUN( spell_poison_weapon          ); /* slot 608 */
DECLARE_SPELL_FUN( spell_embrace                ); /* slot 609 */
DECLARE_SPELL_FUN( spell_mesmerise              ); /* slot 610 */
DECLARE_SPELL_FUN( spell_ethereal               ); /* slot 611 */
DECLARE_SPELL_FUN( spell_fireelem               ); /* slot 612 */
DECLARE_SPELL_FUN( spell_rune_fire              ); /* slot 613 */
DECLARE_SPELL_FUN( spell_rune_shock             ); /* slot 614 */
DECLARE_SPELL_FUN( spell_rune_poison            ); /* slot 615 */
DECLARE_SPELL_FUN( spell_healing_light          ); /* slot 616 */
DECLARE_SPELL_FUN( spell_wither_shadow          ); /* slot 617 */
DECLARE_SPELL_FUN( spell_mana_flare             ); /* slot 618 */
DECLARE_SPELL_FUN( spell_mana_drain             ); /* slot 619 */
DECLARE_SPELL_FUN( spell_cage                   ); /* slot 620 */
DECLARE_SPELL_FUN( spell_cloak_absorb		); /* slot 621 */
DECLARE_SPELL_FUN( spell_cloak_reflect          ); /* slot 622 */
DECLARE_SPELL_FUN( spell_cloak_flaming		); /* slot 623 */
DECLARE_SPELL_FUN( spell_cloak_darkness         ); /* slot 624 */
DECLARE_SPELL_FUN( spell_room_dispel		); /* slot 625 */
DECLARE_SPELL_FUN( spell_cloak_adept            ); /* slot 626 */
DECLARE_SPELL_FUN( spell_cloak_regen   		); /* slot 627 */
DECLARE_SPELL_FUN( spell_throw_star             ); /* slot 628 */
DECLARE_SPELL_FUN( spell_soul_net    		); /* slot 629 */
DECLARE_SPELL_FUN( spell_condense_soul          ); /* slot 630 */
DECLARE_SPELL_FUN( spell_blood_walk   		); /* slot 631 */
DECLARE_SPELL_FUN( spell_restoration   		); /* slot 632 */
DECLARE_SPELL_FUN( spell_infuse      		); /* slot 633 */
DECLARE_SPELL_FUN( spell_holy_light   		); /* slot 634 */
DECLARE_SPELL_FUN( spell_divine_intervention 	); /* slot 635 */
DECLARE_SPELL_FUN( spell_holy_armor      		); /* slot 636 */
DECLARE_SPELL_FUN( spell_earthelem   		); /* slot 637 */
DECLARE_SPELL_FUN( spell_iron_golem      		); /* slot 638 */
DECLARE_SPELL_FUN( spell_diamond_golem   		); /* slot 639 */
DECLARE_SPELL_FUN( spell_soul_thief		 	); /* slot 640 */
DECLARE_SPELL_FUN( spell_holy_avenger    		); /* slot 641 */
DECLARE_SPELL_FUN( spell_heat_armor	   		); /* slot 642 */
DECLARE_SPELL_FUN( spell_retri_strike		 	); /* slot 643 */
DECLARE_SPELL_FUN( spell_lava_burst	    		); /* slot 644 */
DECLARE_SPELL_FUN( spell_fireshield		 	); /* slot 645 */
DECLARE_SPELL_FUN( spell_iceshield	    		); /* slot 646 */
DECLARE_SPELL_FUN( spell_shockshield	   		); /* slot 647 */
DECLARE_SPELL_FUN( spell_shadowshield		 	); /* slot 648 */
DECLARE_SPELL_FUN( spell_thoughtshield	    		); /* slot 649 */
/* enraged holds slot 651-654   */
DECLARE_SPELL_FUN( spell_tribe_claw			); /* slot 655 */
DECLARE_SPELL_FUN( spell_wolf_mark				); /* slot 656 */
DECLARE_SPELL_FUN( spell_blood_sign			); /* 657 */
DECLARE_SPELL_FUN( spell_blood_sense			); /* 658 */
DECLARE_SPELL_FUN( spell_summon_pegasus			); /* slot 659 */
DECLARE_SPELL_FUN( spell_summon_nightmare		); /* slot 660 */
DECLARE_SPELL_FUN( spell_summon_beast			); /* 661 */
DECLARE_SPELL_FUN( spell_summon_devourer		); /* 662 */
DECLARE_SPELL_FUN( spell_summon_shadow			); /* 663 */
DECLARE_SPELL_FUN( spell_creature_bond			); /* 664 */
DECLARE_SPELL_FUN( spell_corrupt_bond			); /* 665 */
DECLARE_SPELL_FUN( spell_fireblast        );/* 666 */
DECLARE_SPELL_FUN( spell_shockstorm       );
DECLARE_SPELL_FUN( spell_cone_cold       );
DECLARE_SPELL_FUN( spell_holy_wrath       );
DECLARE_SPELL_FUN( spell_wraith_touch       );
DECLARE_SPELL_FUN( spell_thought_vise       ); /* 670 */
DECLARE_SPELL_FUN( spell_black_curse        );
DECLARE_SPELL_FUN( spell_cloak_misery        );

DECLARE_SPELL_FUN( spell_poison_quinine        );
DECLARE_SPELL_FUN( spell_poison_arsenic        );
DECLARE_SPELL_FUN( spell_sonic_blast          );
DECLARE_SPELL_FUN( spell_mystical_focus   ); /* 676 */