/***************************************************************************
* 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. *
* *
* 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. *
* *
* 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. *
***************************************************************************/
#include <glib.h>
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <merc.h>
#include <player.h>
#include <interp.h>
/*
* Hunter stuff to go here :P
*/
/* Make a new Hunter*/
void do_convert( CHAR_DATA* ch, char *argument)
{
CHAR_DATA *victim;
char arg [MAX_INPUT_LENGTH];
char buf [MAX_INPUT_LENGTH];
bool can_sire = FALSE;
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_IMMORTAL(ch) && !IS_CLASS(ch,CLASS_HUNTER))
{
send_to_char("Huh?",ch);
}
if (IS_IMMORTAL(ch) && ch->level <= LEVEL_HIGHJUDGE)
{
send_to_char("Huh?\n\r",ch);
return;
}
if (IS_SET(ch->special, SPC_BETA)
|| IS_SET(ch->special, SPC_PRINCE)) can_sire = TRUE;
else can_sire = FALSE;
if (!can_sire)
{
send_to_char("You are unable to convert them.\n\r",ch);
return;
}
if ( arg[0] == '\0' )
{
send_to_char( "Convert whom?\n\r", ch );
return;
}
if ( ( victim = get_char_room( ch, arg ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}
if ( IS_NPC(victim) )
{
send_to_char( "Not on NPC's.\n\r", ch );
return;
}
if ( IS_IMMORTAL(victim) )
{
send_to_char( "Not on Immortal's.\n\r", ch );
return;
}
if ( ch == victim )
{
send_to_char( "You cannot convert yourself.\n\r", ch );
return;
}
if (IS_CLASS(victim, CLASS_MAGE))
{
send_to_char( "You cannot bite mages.\n\r", ch );
return;
}
if ( victim->level != LEVEL_AVATAR && !IS_IMMORTAL(victim) )
{
send_to_char( "You can only claw avatars.\n\r", ch );
return;
}
if (HAS_DELAY(victim) || HAS_DELAY(ch))
{
send_to_char( "Not with a wait timer...\n\r", ch );
return;
}
if (IS_CLASS(victim, CLASS_VAMPIRE) || IS_SET(victim->pcdata->stats[UNI_AFF], VAM_MORTAL))
{
send_to_char( "You are unable to create werevamps!\n\r", ch );
return;
}
if (IS_SWWF(victim))
{
send_to_char("Do I really have to tell you that you can't do this?\n\r",ch);
return;
}
if ( IS_CLASS(victim, CLASS_WEREWOLF))
{
send_to_char( "No, accaully they aready choose thier path.\n\r", ch );
return;
}
if (IS_IMMUNE(victim,IMM_WEREWOLF))
{
send_to_char( "You cannot convert an unwilling person.\n\r", ch );
return;
}
if (ch->exp < 1000000)
{
send_to_char("You cannot afford the 1000000 exp to pass on the gift.\n\r",ch);
return;
}
ch->exp = ch->exp - 1000000;
if (ch->pcdata->stats[UNI_CURRENT] < 1) ch->pcdata->stats[UNI_CURRENT] = 1;
else ch->pcdata->stats[UNI_CURRENT] += 1;
if (IS_SET(ch->special,SPC_SIRE)) REMOVE_BIT(ch->special,SPC_SIRE);
victim->creature=CLASS_HUNTER;
send_to_char( "\n\rYou are now a hunter.\n\r", victim );
if (IS_IMMORTAL(ch))
victim->pcdata->stats[UNI_GEN] = 3;
else
victim->pcdata->stats[UNI_GEN] = ch->pcdata->stats[UNI_GEN] + 1;
if (ch->pcdata->stats[UNI_GEN] == 1)
victim->lord = g_string_assign(victim->lord,ch->name->str);
else
{
sprintf(buf,"%s %s",ch->lord->str,ch->name->str);
victim->lord = g_string_assign(victim->lord,buf);
}
if (!IS_IMMORTAL(ch))
victim->clan= ch->clan;
else
victim->clan = CLAN_LEOPOLD;
victim->pcdata->stats[UNI_AFF] = 0;
victim->pcdata->stats[UNI_CURRENT] = 0;
save_char_obj(ch);
save_char_obj(victim);
if (IS_IMMORTAL(ch))
victim->sect = SECT_SOCIETY_LEO;
else
victim->sect = ch->sect;
return;
}
void do_hunter( CHAR_DATA *ch, char *argument )
{
char arg [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (IS_IMMUNE(ch, IMM_WEREWOLF))
{
send_to_char("You will now allow hunters to convert you.\n\r",ch);
REMOVE_BIT(ch->immune, IMM_WEREWOLF);
return;
}
send_to_char("You will no longer allow hunters to convert you.\n\r",ch);
SET_BIT(ch->immune, IMM_WEREWOLF);
return;
}