rm6/
rm6/clans/
rm6/councils/
rm6/deity/
rm6/doc/mudprogs/
rm6/exchange/
rm6/gods/
rm6/homes/
rm6/nations/
rm6/player/
rm6/player/a/
rm6/src/RCS/
rm6/src/dmalloc/
rm6/src/dmalloc/bin/
rm6/src/dmalloc/include/
rm6/src/dmalloc/lib/
rm6/src/scripts/
rm6/src/utils/
/****************************************************************************
 * ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh,    *
 * Badastaz, Digifuzz, Senir, Kratas, Scion, Shogar and Tagith.             *
 * ------------------------------------------------------------------------ *
 * Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain,   *
 * Ohio.    ALL RIGHTS RESERVED    See /doc/RMLicense.txt for more details. *
 ****************************************************************************/

/*
 *  Fear skill
 *  Author: Cronel (cronel_kal@hotmail.com)
 *  of FrozenMUD (empire.digiunix.net 4000)
 *
 *  Permission to use and distribute this code is granted provided
 *  this header is retained and unaltered, and the distribution
 *  package contains all the original files unmodified.
 *  If you modify this code and use/distribute modified versions
 *  you must give credit to the original author(s).
 */

/* You will only need these if you don't include this code into magic.c */

#include "mud.h"

bool check_save( int sn, int level, CHAR_DATA * ch, CHAR_DATA * victim );
void failed_casting( SKILLTYPE * skill, CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj );
void immune_casting( SKILLTYPE * skill, CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj );
void successful_casting( SKILLTYPE * skill, CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj );

ch_ret spell_fear( int sn, int level, CHAR_DATA * ch, void *vo )
{
   CHAR_DATA *victim;
   SKILLTYPE *skill = get_skilltype( sn );

   if( !ch->fighting )
   {
      send_to_char( "You're not fighting anyone.\r\n", ch );
      return rSPELL_FAILED;
   }

   victim = ch->fighting->who;

   if( ( !IS_NPC( ch ) && !IS_NPC( victim ) )
       || ( SPELL_SAVE( skill ) == SE_NEGATE && check_save( sn, level, ch, victim ) ) )
   {
      failed_casting( skill, ch, victim, NULL );
      return rSPELL_FAILED;
   }

   if( ( IS_NPC( victim ) && xIS_SET( victim->act, ACT_SENTINEL ) ) || ( get_timer( ch, TIMER_FEARSPELL ) != 0 ) )
   {
      immune_casting( skill, ch, victim, NULL );
      return rSPELL_FAILED;
   }

   successful_casting( skill, ch, victim, NULL );
   do_flee( victim, "" );
   if( IS_NPC( victim ) )
      start_fearing( victim, ch );

   add_timer( ch, TIMER_FEARSPELL, 50, NULL, 0 );
   return rNONE;
}