wolfpaw4.0-release/area/
wolfpaw4.0-release/backup/
wolfpaw4.0-release/bin/
wolfpaw4.0-release/boards/
wolfpaw4.0-release/clans/
wolfpaw4.0-release/councils/
wolfpaw4.0-release/deity/
wolfpaw4.0-release/finger/
wolfpaw4.0-release/gods/
wolfpaw4.0-release/guilds/
wolfpaw4.0-release/lockers/
wolfpaw4.0-release/log/
wolfpaw4.0-release/log/Clean/
wolfpaw4.0-release/maps/
wolfpaw4.0-release/offline_data/
wolfpaw4.0-release/player-obj/
wolfpaw4.0-release/player-obj/a/
wolfpaw4.0-release/player/
wolfpaw4.0-release/player/a/
wolfpaw4.0-release/plog/
wolfpaw4.0-release/save-rooms/
wolfpaw4.0-release/secure/
wolfpaw4.0-release/source/
wolfpaw4.0-release/source/betasrc/system/
wolfpaw4.0-release/source/betasrc/util/
wolfpaw4.0-release/system/clean-source/
wolfpaw4.0-release/system/clean-source/grux/
/****************************************************************************
 * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame      |   \\._.//   *
 * -----------------------------------------------------------|   (0...0)   *
 * SMAUG 1.0 (C) 1994, 1995, 1996 by Derek Snider             |    ).:.(    *
 * -----------------------------------------------------------|    {o o}    *
 * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus,      |   / ' ' \   *
 * Scryn, Rennard, Swordbearer, Gorog, Grishnakh and Tricops  |~'~.VxvxV.~'~*
 ****************************************************************************
 *  The MUDprograms are heavily based on the original MOBprogram code that  *
 *  was written by N'Atas-ha.						    *
 *  This addition to the mudprogramming code by Rjael of SaltWind MUD.      *
 *                       mp_hunt, mp_hate, mp_fear                          *
 ****************************************************************************/

#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include "mud.h"

void do_mphate( CHAR_DATA *ch, char *argument )
{
    char 	arg1[ MAX_INPUT_LENGTH ];
    char 	arg2[ MAX_INPUT_LENGTH ];
    CHAR_DATA   *victim;
    CHAR_DATA   *master;
    CHAR_DATA   *mob;
    sh_int	vnum;

    if ( !IS_NPC( ch ) )
    {
	send_to_char( "Huh?\n\r", ch );
	return;
    }

    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    if ( arg1[0] == '\0' )
    {
	progbug( "Mphate - Bad syntax, bad victim", ch );
	return;
    }

    if ( ( victim = get_char_world ( ch, arg1 ) ) == NULL )
    {
	progbug( "Mphate - No such person", ch );
	return;
    }
    else if ( IS_NPC( victim) )
    {
	if ( IS_AFFECTED ( victim, AFF_CHARM ) &&
	( master = victim->master ) )
	{
	    if ( ( victim = get_char_world( ch, master->name) ) == NULL ); 
	    {
		progbug( "Mphate - NULL NPC Master", ch );
		return;
	    }
	}
	else
	{
	    progbug( "Mphate - NPC victim", ch );
	    return;
	}
    }

    if ( arg2[0] == '\0' )
    {
	progbug( "Mphate - bad syntax, no aggressor", ch );
	return;
    }
    else 
    {
	if ( is_number( arg2 ) )
	{
	    vnum = atoi( arg2);
	    if ( vnum < 1 )
	    {
		progbug("Mphate -- aggressor vnum out of range", ch );
		return;
	    }
	}
	else
	{
	    progbug("Mphate -- aggressor no vnum", ch );
	    return;
	}
    }
    for ( mob = first_char; mob; mob = mob->next )
    {
	if ( !IS_NPC(mob)
        ||!mob->in_room
	||!mob->pIndexData->vnum )
	    continue;
	
	if ( vnum == mob->pIndexData->vnum )
	{
	    start_hating( mob, victim );
	}
    }
}

void do_mphunt( CHAR_DATA *ch, char *argument )
{
    char 	arg1[ MAX_INPUT_LENGTH ];
    char 	arg2[ MAX_INPUT_LENGTH ];
    CHAR_DATA   *victim;
    CHAR_DATA   *master;
    CHAR_DATA   *mob;
    sh_int	vnum;

    if ( !IS_NPC( ch ) )
    {
	send_to_char( "Huh?\n\r", ch );
	return;
    }

    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    if ( arg1[0] == '\0' )
    {
	progbug( "Mphunt - Bad syntax, bad victim", ch );
	return;
    }

    if ( ( victim = get_char_world ( ch, arg1 ) ) == NULL )
    {
	progbug( "Mphunt - No such person", ch );
	return;
    }
    else if ( IS_NPC( victim) )
    {
	if ( IS_AFFECTED ( victim, AFF_CHARM ) &&
	( master = victim->master ) )
	{
	    if ( ( victim = get_char_world( ch, master->name) ) == NULL ); 
	    {
		progbug( "Mphunt - NULL NPC Master", ch );
		return;
	    }
	}
	else
	{
	    progbug( "Mphunt - NPC victim", ch );
	    return;
	}
    }

    if ( arg2[0] == '\0' )
    {
	progbug( "Mphunt - bad syntax, no aggressor", ch );
	return;
    }
    else 
    {
	if ( is_number( arg2 ) )
	{
	    vnum = atoi( arg2);
            if ( vnum < 1 )
	    {
		progbug("Mphunt -- aggressor vnum out of range", ch );
		return;
	    }
	}
	else
	{
	    progbug("Mphunt -- aggressor no vnum", ch );
	    return;
	}
    }
    for ( mob = first_char; mob; mob = mob->next )
    {
	if ( !IS_NPC(mob)
        ||!mob->in_room
	||!mob->pIndexData->vnum )
	    continue;
	
	if ( vnum == mob->pIndexData->vnum )
	{
	    start_hunting( mob, victim );
	}
    }
}

void do_mpfear( CHAR_DATA *ch, char *argument )
{
    char 	arg1[ MAX_INPUT_LENGTH ];
    char 	arg2[ MAX_INPUT_LENGTH ];
    CHAR_DATA   *victim;
    CHAR_DATA   *master;
    CHAR_DATA   *mob;
    sh_int	vnum;

    if ( !IS_NPC( ch ) )
    {
	send_to_char( "Huh?\n\r", ch );
	return;
    }

    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    if ( arg1[0] == '\0' )
    {
	progbug( "Mpfear - Bad syntax, bad victim", ch );
	return;
    }

    if ( ( victim = get_char_world ( ch, arg1 ) ) == NULL )
    {
	progbug( "Mpfear - No such person", ch );
	return;
    }
    else if ( IS_NPC( victim) )
    {
	if ( IS_AFFECTED ( victim, AFF_CHARM ) &&
	( master = victim->master ) )
	{
	    if ( ( victim = get_char_world( ch, master->name) ) == NULL ); 
	    {
		progbug( "Mpfear - NULL NPC Master", ch );
		return;
	    }
	}
	else
	{
	    progbug( "Mpfear - NPC victim", ch );
	    return;
	}
    }

    if ( arg2[0] == '\0' )
    {
	progbug( "Mpfear - bad syntax, no aggressor", ch );
	return;
    }
    else 
    {
	if ( is_number( arg2 ) )
	{
	    vnum = atoi( arg2);
            if ( vnum < 1 )
	    {
		progbug("Mpfear -- aggressor vnum out of range", ch );
		return;
	    }
	}
	else
	{
	    progbug("Mpfear -- aggressor no vnum", ch );
	    return;
	}
    }
    for ( mob = first_char; mob; mob = mob->next )
    {
	if ( !IS_NPC(mob)
        ||!mob->in_room
	||!mob->pIndexData->vnum )
	    continue;
	
	if ( vnum == mob->pIndexData->vnum )
	{
	    start_fearing( mob, victim );
	}
    }
}

/* mpassassinate by Greywolf, for use in holychoices.are */
void do_mpassassinate( CHAR_DATA *ch, char *argument )
{
    char 	arg1[ MAX_INPUT_LENGTH ];
    CHAR_DATA   *victim;

    if ( !IS_NPC( ch ) )
    {
	send_to_char( "Huh?\n\r", ch );
	return;
    }

    argument = one_argument( argument, arg1 );

    if ( arg1[0] == '\0' )
    {
	progbug( "MpAssassinate - Bad syntax, bad victim", ch );
	return;
    }

    if ( ( victim = get_char_world ( ch, arg1 ) ) == NULL )
    {
	progbug( "MpAssassinate - No such person", ch );
	return;
    }
    multi_hit( ch, victim, gsn_assassinate );  
}