/
3.1.11/player/
3.1.11/player/c/
3.1.11/player/m/
/***************************************************************************
 *  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.                              *
 *                                                                         *
 *  Envy Diku Mud improvements copyright (C) 1994 by Michael Quan, David   *
 *  Love, Guilherme 'Willie' Arnold, and Mitchell Tse.                     *
 *                                                                         *
 *  EnvyMud 2.0 improvements copyright (C) 1995 by Michael Quan and        *
 *  Mitchell Tse.                                                          *
 *                                                                         *
 *  In order to use any part of this Envy Diku Mud, you must comply with   *
 *  the original Diku license in 'license.doc', the Merc license in        *
 *  'license.txt', as well as the Envy license in 'license.nvy'.           *
 *  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.                                                  *
 ***************************************************************************/

/*
 * Mythran Mud clan system
 * Version 0.2
 * Written by Maniac
 *
 * History:
 * july 17, 1996:	First version, features various clan commands, like
 *			apply, initiate, recruit, advance, kick, talk
 * july 18, 1996:	Added some minor commands, and fixed a few.
 *			Added clan donate (in act_obj.c)
 * july 23, 1996:	Added clan recall (in act_move.c), and crecall command
 * july 25, 1996:	Fixed some bugs with leader and advance
 * october 21, 1996:	Improved on info, if char exiled or in no clan...
 * october 22, 1996:	Restructured clan none and exile, to fix a bug.
 *			Added clan list command (mainly for debugging)
 *
 */

#if defined( macintosh )
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"

/* External functions */
void    talk_channel    args( ( CHAR_DATA *ch, char *argument,
                            int channel, const char *verb ) );


int clan_lookup(const char *name)
{
	int clan;

	for (clan = 1; clan_table[clan].vnum != 0 ; clan++)
	{
		if (LOWER(name[0]) == LOWER(clan_table[clan].name[0])
		    &&  !str_prefix(name,clan_table[clan].name))
			return clan_table[clan].vnum;
	}

	return CLAN_NONE;
}

char * clan_name( int clan )
{
	int	i;

	if (clan == CLAN_NONE)
		return (char *)"None";

	for(i = 1; clan_table[i].vnum != 0; i++)
		if (clan_table[i].vnum == clan)
			return (char *)clan_table[clan].name;

	return "Error";
}

/* Is same clan... written by Maniac */
bool is_same_clan( CHAR_DATA * ch, CHAR_DATA * victim )
{
	if (IS_NPC(victim) )	/* No npc's... */
		return FALSE;
	if (IS_NPC(ch) )
		return FALSE;

	/* 2x clan none or exile still doesn't make it a clan... */
	if (ch->pcdata->clan == CLAN_NONE)
		return FALSE;
	if (victim->pcdata->clan == CLAN_NONE)
		return FALSE;

	if (victim->pcdata->clan == ch->pcdata->clan)
		return TRUE;
	return FALSE;
}

bool is_in_clan( CHAR_DATA *ch )
{
	if (IS_NPC(ch) )
		return FALSE;

	if (ch->pcdata->clanlevel < CLAN_LEVEL_1 )
		return FALSE;		/* Only full members */

	if (ch->pcdata->clan > CLAN_NONE )
		return TRUE;

	return FALSE;
}

bool is_clan_member( CHAR_DATA *ch, int vnum )
{
	if (ch->pcdata->clan == vnum )
		return TRUE;
	return FALSE;
}

void do_clantalk( CHAR_DATA *ch, char *argument )
{
	if (!is_in_clan(ch))
	{
		send_to_char ("You are not in a clan... so don't clantalk...\n\r", ch);
		return;
	}

	if ( IS_AFFECTED( ch, AFF_MUTE )
		|| IS_SET( ch->in_room->room_flags, ROOM_CONE_OF_SILENCE ) )
	{
		send_to_char( "You can't seem to break the silence.\n\r", ch );
		return;
	}

	if (argument[0] == '\0' )
	{
		TOGGLE_BIT( ch->deaf, CHANNEL_CLAN );
		send_to_char ("Clan channel toggled.\n\r", ch );
		return;
	}

	talk_channel( ch, argument, CHANNEL_CLAN, "clantalk" );
	return;
}

void do_clanrecall( CHAR_DATA *ch, char *argument)
{
	do_recall(ch, "clan");
}

void do_clan( CHAR_DATA *ch, char *argument )
{
	char		buf[MAX_STRING_LENGTH];
	char		arg1[MAX_INPUT_LENGTH];
	char		arg2[MAX_INPUT_LENGTH];
	char		arg3[MAX_INPUT_LENGTH];
	CHAR_DATA *	victim;
	int		clan;
	int		level;

	if (IS_NPC( ch ) )
	{
		send_to_char ("You are not interested in clans.\n\r", ch);
		return;
	}

	argument = one_argument( argument, arg1 );

	if ( arg1[0] == '\0' )
	{
		send_to_char( "Syntax: clan [function] [parameters].\n\r", ch );
		send_to_char( "Functions: info, list, talk, apply, kick,\n\r", ch);
		send_to_char( "advance, recruit, initiate, leader, leave\n\r", ch );
		send_to_char( "where, who\n\r", ch );
		return;
	}

	if (!str_prefix( arg1, "talk" ) )
	{
		do_clantalk (ch, argument );
		return;
	}

	/* These are placed here so we don't have to paste 'em back
	together for clantalk...	-- Maniac --	*/
	argument = one_argument( argument, arg2 );
	argument = one_argument( argument, arg3 );

	if ( !str_prefix( arg1, "info" ) )
	{
		if (ch->pcdata->clanlevel == CLAN_EXILE)
		{
			send_to_char ("You have been exiled from your clan.\n\r", ch );
			return;
		}
		if (ch->pcdata->clan == CLAN_NONE)
		{
			send_to_char ("You are not in a clan.\n\r", ch );
			return;
		}
		if ( arg2[0] == '\0' )
		{	/* No argument, so info about ch */
		    sprintf (buf, "You are member of clan %s (level %d).\n\r",
			clan_name(ch->pcdata->clan),
			(ch->pcdata->clanlevel - CLAN_INITIATE ) );
		    send_to_char( buf, ch );
		    switch( ch->pcdata->clanlevel )
		    {
			default:
			    break;
			case CLAN_GOD:
			    send_to_char( "You are the clan God.\n\r", ch );
			    break;
			case CLAN_LEADER:
			    send_to_char( "You are the clan leader.\n\r", ch );
			    break;
			case CLAN_RECRUITER:
			    send_to_char( "You are the clan recruiter.\n\r", ch );
			    break;
			case CLAN_APPLICATOR:
			    send_to_char( "You are the clan applicater.\n\r", ch );
			    break;
		    }
		    return;
		}
		else
		{	/* argument, so info about victim */
		    if ( !(victim = get_char_world( ch, arg2 ) ) || ( IS_NPC( victim ) ) )
		    {
			sprintf( buf, "You can't find %s.\n\r", arg2 );
			send_to_char( buf, ch );
			return;
		    }
		    if ( ( !is_same_clan( ch, victim ) ) && ( ch->pcdata->clanlevel == CLAN_GOD ) )
		    {	/* Not same clan, but CLAN_GOD can see anyways */
			sprintf( buf, "%s is a member of clan %s (level %d).\n\r",
			    victim->name, clan_name( victim->pcdata->clan ),
			    (victim->pcdata->clanlevel - CLAN_INITIATE ) );
			send_to_char( buf, ch );
			return;
		    }
		    if ( ( is_same_clan( ch, victim ) ) && ( ch->pcdata->clanlevel >= CLAN_LEADER ) )
		    {	/* Same clan, and char is at least CLAN_LEADER */
			sprintf( buf,"%s is a member of clan %s (level %d ).\n\r",
			    victim->name,clan_name( victim->pcdata->clan ),
			    (victim->pcdata->clanlevel - CLAN_INITIATE ) );
			send_to_char( buf, ch );
			return;
		    }
		    send_to_char( "You cannot do that.\n\r", ch );
		    return;
		}
	}


	if ( !str_prefix( arg1, "apply" ) )
	{
		if ( ch->pcdata->clanlevel == CLAN_EXILE )
		{
    send_to_char ("You have already been in a clan, and have been exiled.\n\r", ch);
    send_to_char ("This means you can't join any clans anymore...\n\r", ch);
    send_to_char ("\t\tHave a nice day.\n\r", ch);
			return;
		}

		if ( is_in_clan (ch) )
		{
			send_to_char ("You are already in a clan...\n\r", ch);
			return;
		}

		if (arg2[0] == '\0' )
		{
			send_to_char ("Usage: clan apply <clanname>\n\r", ch);
			return;
		}

		if (( clan = clan_lookup(arg2)) <= CLAN_NONE )
		{
			send_to_char ("That is not a valid clan.\n\r", ch );
			return;
		}

		if ( ch->level < 10 )
		{
			send_to_char ("You have to be level 10 to join a clan.\n\r", ch );
			return;
		}

		if (!clan_accept(ch, clan ) )
		{
			send_to_char ("You do not have the right qualities the clan\n\r", ch );
			send_to_char ("Requires from you, you have not been accepted.\n\r", ch );
			return;
		}

		sprintf (buf, "note to %s", clan_name(clan) );
		interpret (ch, buf );
		interpret (ch, "note subject I want to join the clan");
		interpret (ch, "note + Please let me join...");
		interpret (ch, "note send" );

		send_to_char ("Your application has been accepted.\n\r", ch );
		send_to_char ("The clan leaders will discuss your membership at\n\r", ch);
		send_to_char ("next clan meeting, you will hear from us.\n\r", ch );
		ch->pcdata->clan = clan;
		ch->pcdata->clanlevel = CLAN_APPLICANT;
	} /* Apply */

	else if (!str_prefix( arg1, "initiate" ))
	{
		if ( !is_in_clan(ch) )
		{
			send_to_char ("You are not with a clan.\n\r", ch );
			return;
		}

		if ( ch->pcdata->clanlevel < CLAN_APPLICATOR )
		{
			send_to_char ("You have no power to initiate members.\n\r", ch );
			return;
		}

		if (arg2[0] == '\0' )
		{
			send_to_char ("Who do you wish to initiate.\n\r", ch );
			return;
		}

		if ((victim = get_char_world(ch, arg2 ) ) == NULL )
		{
			sprintf (buf, "You can't find %s.\n\r", arg2 );
			send_to_char(buf, ch );
			return;
		}

		if ( !is_same_clan (ch, victim) )
		{
			sprintf (buf, "%s hasn't applied for YOUR clan.\n\r",
			    victim->name );
			send_to_char(buf, ch );
			return;
		}

		switch( victim->pcdata->clanlevel )
		{
		    default:
			sprintf (buf, "%s has not applied for a clan.\n\r",
			    victim->name);
			send_to_char(buf, ch );
			break;
		    case CLAN_APPLICANT:
			victim->pcdata->clanlevel++;
			sprintf (buf, "Ok, %s has been accepted as applicant.\n\r", victim->name );
			send_to_char (buf, ch );
			send_to_char ("Your application has been acccepted, you are now a clan initiate.\n\r", victim);
			break;
		    case CLAN_LEVEL_5:
			if ( ch->pcdata->clanlevel < CLAN_RECRUITER )
			{
			    send_to_char( "You can't make anyone an applicator.\n\r",ch );
			    break;
			}
			victim->pcdata->clanlevel++;
			sprintf( buf, "Ok, %s has been made applicator.\n\r", victim->name );
			send_to_char (buf, ch );
			send_to_char( "You are now clan applicater.\n\r", victim );
			break;
		}
		return;
	} /* initiate */

	else if (!str_prefix ( arg1, "advance" ) )
	{
		if ( !is_in_clan(ch) )
		{
			send_to_char ("You are not with a clan.\n\r", ch );
			return;
		}

		if ( ch->pcdata->clanlevel < CLAN_LEADER )
		{
			send_to_char ("You have no power to advance members.\n\r", ch );
			return;
		}

		if (arg2[0] == '\0' )
		{
			send_to_char ("Who do you wish to advance.\n\r", ch );
			return;
		}

		if ((victim = get_char_world(ch, arg2 ) ) == NULL )
		{
			sprintf (buf, "You can't find %s.\n\r", arg2 );
			send_to_char(buf, ch );
			return;
		}

		if ( !is_same_clan( ch, victim ) )
		{
			sprintf (buf, "%s isn't a member of YOUR clan.\n\r",
			    victim->name );
			send_to_char(buf, ch );
			return;
		}

		if (victim->pcdata->clanlevel >= ch->pcdata->clanlevel )
		{
			sprintf (buf, "You are not powerfull enough to advance %s.\n\r",
			    victim->name );
			send_to_char( buf, ch );
			return;
		}

		if (victim->pcdata->clanlevel >= CLAN_LEVEL_5 )
		{
			sprintf (buf, "%s is already at maximum clan level.\n\r",
				victim->name );
			send_to_char (buf, ch );
			return;
		}

		if (arg3[0] == '\0')
		{
			victim->pcdata->clanlevel++;
		}
		else
		{
			level = atoi(arg3);
			if ((level < 1 ) || (level > 5 ) )
			{
				send_to_char ("Levelrange is 1 to 5.\n\r", ch );
				return;
			}
			victim->pcdata->clanlevel = (CLAN_INITIATE + level);
		}
		sprintf (buf, "%s is now clanlevel %d.\n\r",
		    victim->name, (victim->pcdata->clanlevel - CLAN_INITIATE) );
		send_to_char (buf, ch );
		sprintf (buf, "You are now clanlevel %d.\n\r",
			(victim->pcdata->clanlevel - CLAN_INITIATE ) );
		send_to_char (buf, victim );
		return;
	} /* Advance */

        else if (!str_prefix( arg1, "recruit" ))
        {
                if ( !is_in_clan( ch ) )
                {
                        send_to_char ("You are not with a clan.\n\r", ch );
                        return;
                }

                if ( ch->pcdata->clanlevel < CLAN_RECRUITER )
                {
                        send_to_char ("You have no power to recruit members.\n\r", ch );
                        return;
                }

                if (arg2[0] == '\0' )
                {
                        send_to_char ("Who do you wish to recruit.\n\r", ch );
                        return;
                }

                if ((victim = get_char_world(ch, arg2 ) ) == NULL )
                {
                        sprintf (buf, "You can't find %s.\n\r", arg2 );
                        send_to_char(buf, ch );
                        return;
                }

                if ( !is_same_clan( ch, victim ) )
                {
                        sprintf (buf, "%s isn't a member of YOUR clan.\n\r",
                            victim->name );
                        send_to_char(buf, ch );
                        return;
                }

		switch( victim->pcdata->clanlevel )
		{
		    default:
                        sprintf (buf, "%s has yet been initiated for the clan.\n\r",
                            victim->name);
                        send_to_char(buf, ch );
                        break;
		    case CLAN_INITIATE:
			victim->pcdata->clanlevel++;
			sprintf (buf, "Ok, %s has been accepted as a full clan member.\n\r",
			    victim->name );
			send_to_char (buf, ch );
			send_to_char ("You are now a full clan member (level 1).\n\r", victim );
			break;
		    case CLAN_APPLICATOR:
			victim->pcdata->clanlevel++;
			sprintf( buf, "Ok, %s has been made clan recruiter.\n\r",
			    victim->name );
			send_to_char( buf, ch );
			send_to_char ( "You are now a clan recruiter.\n\r", victim );
			break;
		}
		return;
        } /* recruit */

	else if (!str_prefix ( arg1, "leader" ) )
	{
		if ( !is_in_clan(ch) )
		{
			send_to_char ("You are not with a clan.\n\r", ch );
			return;
		}

		if ( ch->pcdata->clanlevel < CLAN_LEADER )
		{
			send_to_char ("You have no power to make members leaders.\n\r", ch );
			return;
		}

		if (arg2[0] == '\0' )
		{
			send_to_char ("Who do you wish to advance to a leader.\n\r", ch );
			return;
		}

		if ((victim = get_char_world(ch, arg2 ) ) == NULL )
		{
			sprintf (buf, "You can't find %s.\n\r", arg2 );
			send_to_char(buf, ch );
			return;
		}

		if ( !is_same_clan( ch, victim ) )
		{
			sprintf (buf, "%s isn't a member of YOUR clan.\n\r",
			    victim->name );
			send_to_char(buf, ch );
			return;
		}

		if (victim->pcdata->clanlevel >= ch->pcdata->clanlevel )
		{
			sprintf (buf, "You are not powerfull enough to advance %s.\n\r",                    victim->name );
			send_to_char( buf, ch );
			return;
		}

		if ((IS_IMMORTAL(ch) && (ch->pcdata->clanlevel == CLAN_GOD )))
		{
			/* Remove leadership from a leader */
			if (victim->pcdata->clanlevel == CLAN_LEADER)
			{
				victim->pcdata->clanlevel--;
				send_to_char ("Ok... done.\n\r", ch );
			}
			/* Make someone a leader */
			else
			{
				victim->pcdata->clanlevel = CLAN_LEADER;
				send_to_char ("Ok... done.\n\r", ch );
				send_to_char ("You are now a clan leader.\n\r", victim );
			}
			return;
		}
		else if (ch->pcdata->clanlevel == CLAN_LEADER )
		{
			send_to_char ("Ok... you are no longer a leader.\n\r", ch );
			ch->pcdata->clanlevel--;
			if (victim->pcdata->clanlevel < CLAN_LEADER )
			{
				victim->pcdata->clanlevel = CLAN_LEADER;
				send_to_char ("You are now clan leader.\n\r", victim );
			}
			return;
		}
		else
		{
			send_to_char ("Something is wrong with leader, notify coders.\n\r", ch );
			return;
		}
	} /* Leader */

	else if (!str_cmp ( "leave", arg1 ) )
	{
		if (!is_in_clan(ch) )
		{
			send_to_char ("But you are not in a clan...\n\r", ch);
			return;
		}

		if (arg2[0] == '\0')
		{
			send_to_char ("Are you very sure you want to leave the clan ??\n\r", ch );
			send_to_char ("If so, type: clan leave, but with the string below as argument.\n\r", ch );
			sprintf ( buf, "%s\n\r", ch->pcdata->pwd );
			send_to_char (buf, ch);
			return;
		}
		else if (!str_cmp( arg2, ch->pcdata->pwd) )
		{
			send_to_char ("OK... you are now exiled.\n\r", ch );
			ch->pcdata->clan = CLAN_NONE;
			ch->pcdata->clanlevel = CLAN_EXILE;
			return;
		}
		else
		{
			send_to_char ("That was not the correct string.\n\r", ch );
			return;
		}
	}

	else if (!str_prefix (arg1, "kick" ) )
	{
		if ( !is_in_clan(ch) )
		{
			send_to_char ("You are not with a clan.\n\r", ch );
			return;
		}

		if ( ch->pcdata->clanlevel < CLAN_RECRUITER )
		{
			send_to_char ("You have no power to kick members.\n\r", ch );
			return;
		}

		if (arg2[0] == '\0' )
		{
			send_to_char ("Who do you wish to kick.\n\r", ch );
			return;
		}

		if ((victim = get_char_world(ch, arg2 ) ) == NULL )
		{
			sprintf (buf, "You can't find %s.\n\r", arg2 );
			send_to_char(buf, ch );
			return;
		}

		if ( !is_same_clan( ch, victim ) )
		{
			sprintf (buf, "%s isn't a member of YOUR clan.\n\r",
			    victim->name );
			send_to_char(buf, ch );
			return;
		}

		if (victim->pcdata->clanlevel >= ch->pcdata->clanlevel )
		{
			sprintf (buf, "You are not powerfull enough to kick %s.\n\r",                    victim->name );
			send_to_char( buf, ch );
			return;
		}

		/* Ok... do it... */
		victim->pcdata->clan = CLAN_NONE;
		victim->pcdata->clanlevel = CLAN_EXILE;
		send_to_char ("You have been kicked from the clan.\n\r", victim );
		send_to_char ("You are now exiled.\n\r", victim );
		sprintf (buf, "%s has been exiled.\n\r", victim->name );
		send_to_char (buf, ch );
		return;
	}

	else if (!str_prefix ( arg1, "list" ) )
	{
		sprintf (buf, "Clan List\n=========\n\n");
		send_to_char (buf, ch );
		for(clan = 1; clan_table[clan].vnum != 0; clan++)
		{
			sprintf (buf, "%s\n", clan_table[clan].name);
			send_to_char (buf, ch );
		}
		return;
	}

	else if ( !str_prefix( arg1, "where" ) )
	{
	    sprintf( buf, "Clan member:  Where:\n\r" );
	    send_to_char( buf, ch );
	    for( victim = char_list; victim; victim = victim->next )
	    {
		if( is_same_clan( ch, victim ) )
		{
		    sprintf( buf, "%-13s %s\n\r",
			victim->name, victim->in_room->name );
		    send_to_char( buf, ch );
		}
	    }
	    return;
	}

	else if ( !str_prefix( arg1, "who" ) )
	{
	    interpret( ch, "who clan" );
	    return;
	}

	else
	{
		send_to_char ("Unknown option.\n\r", ch );
		return;
	}
}

void do_guild( CHAR_DATA *ch, char *argument )
{
	char		arg1[MAX_INPUT_LENGTH];
	char		arg2[MAX_INPUT_LENGTH];
	char		arg3[MAX_INPUT_LENGTH];
	char		buf[MAX_STRING_LENGTH];
	CHAR_DATA *	victim;
	int		clan;
	int		level;

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

	if ( !authorized( ch, "guild" ) )
	    return;

	if ( arg1[0] == '\0' )
	{
		send_to_char( "Syntax: guild <char> <cln name> <level>\n\r",ch);
		return;
	}

	if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
	{
		send_to_char( "They aren't playing.\n\r", ch );
		return;
	}

	if (IS_NPC(victim))
	{
		send_to_char( "Only on players.\n\r", ch );
		return;
	}

	if ( arg2[0] == '\0' )
	{
		sprintf(buf,"%s is member of clan %s (level %d).\n\r",
		victim->name, capitalize(clan_table[ch->pcdata->clan].name),
		(victim->pcdata->clanlevel - CLAN_INITIATE) );
                send_to_char(buf,ch);
		return;
	}

	if (!str_prefix(arg2,"none"))
	{
		sprintf (buf, "%s is now clanless.\n\r", victim->name);
		send_to_char(buf, ch);
		send_to_char("You are now a member of no clan!\n\r",victim);
		victim->pcdata->clan = CLAN_NONE;
		victim->pcdata->clanlevel = CLAN_NOLEVEL;
		return;
	}

	if (!str_prefix(arg2,"exile"))
	{
		sprintf (buf, "%s is now exiled.\n\r", victim->name);
		send_to_char(buf, ch);
		send_to_char("You are now exiled\n\r",victim);
		victim->pcdata->clan = CLAN_NONE;
		victim->pcdata->clanlevel = CLAN_EXILE;
		return;
	}

	if (arg3[0] == '\0' )
		level = CLAN_APPLICANT;
	else
		level = (CLAN_INITIATE + atoi(arg3));

	if ( ( level < CLAN_APPLICANT ) || ( level > CLAN_GOD ) )
	{
		send_to_char ("Level range is -1 to 9.\n\r", ch );
		send_to_char ("-1 = Applicant, 0 = initiate, 1-5 = level 1-5\n\r", ch);
		send_to_char ("6 = applicator, 7 = recruiter, 8 = leader 9 = god.\n\r", ch );
		return;
	}

	if ((clan = clan_lookup(arg2)) == 0)
	{
		send_to_char("No such clan exists.\n\r",ch);
		return;
	}
	else
	{
		sprintf(buf,"%s is now a member of clan %s (level %d).\n\r",
		    victim->name, capitalize(clan_table[clan].name),
		    (level - CLAN_INITIATE) );
		send_to_char(buf,ch);
		sprintf(buf,"You are now a member of clan %s (level %d).\n\r",
		capitalize(clan_table[clan].name),
		    (level - CLAN_INITIATE ) );
	}

	victim->pcdata->clan = clan;
	victim->pcdata->clanlevel = level;
}

int clan_accept(CHAR_DATA *ch, int clan )
{
	if (clan == CLAN_MYTHRAN)
	{
		if (ch->alignment < 0 )	/* Accept good chars only */
		{
			send_to_char ("You must be of good alignment to join clan Mythran.\n\r", ch );
			return FALSE;
		}
		if (ch->level < 15 )
		{
			send_to_char ("You must be level 15 to join clan Mythran.\n\r", ch );
			return FALSE;	/* Must be level 15 */
		}
		if (ch->gold < 50000 )
		{
			send_to_char ("You don't have enough money to join clan Mythran.\n\r", ch );
			return FALSE;	/* only wealthy players... */
		}
	}
	else if ( clan == CLAN_DRAGON )
	{
	    if ( ch->alignment < 0 ) /* Accept good chars only */
	    {
		send_to_char ( "You are too evil to join the Dragon clan.\n\r", ch );
		return FALSE;	/* Only kind/good chars */
	    }
	    if ( ch->level < 20 )
	    {
		send_to_char ( "You are too inexperienced. You must be level 20 to join Dragokn clan.\n\r", ch );
		return FALSE;	/* Must be level 20 */
	    }
	    if ( ch->pcdata->title == title_table [ch->class] [ch->level] [ch->sex == SEX_FEMALE ? 1 : 0 ] )
	    {
		send_to_char ( "You are not orriginal enough to join clan Dragon.\n\r", ch );
		return FALSE;	/* Must have set his own title */
	    }
	}
	return TRUE;
}