/****************************************************************************
* [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 );
}