/***************************************************************************
 *  OBLIVION 1.2 is copyright by Wes Wagner August, 1996                   *
 *  by using this code you have agreed to the terms of the Oblivion License*
 **************************************************************************/
 
#if defined(macintosh)
#include <types.h>
#include <time.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "merc.h"
#include "recycle.h"
#include "tables.h"
#include "lookup.h"

void do_add( CHAR_DATA *ch, char *argument )
{
	char arg1[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	CHAR_DATA *victim;

	argument = one_argument( argument, arg1 );
	if(ch->clan==0)
	{
		send_to_char("You are not in a clan yourself!", ch);
		return ;
	}
	if(!clan_table[ch->clan].can_add[ch->clanrank])
	{
		send_to_char("You have not the authority to do that.\n\r",ch);
		return ;
	}
	if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
	 {
		  send_to_char( "They aren't playing.\n\r", ch );
		  return;
	 }
	if(victim->clan>0)
	{
		send_to_char( "They are already in a clan.\n\r",ch);
		return ;
	}
	if(victim->seeks!=ch->clan)
	{
		send_to_char("They are not seeking to join your clan.\n\r",ch);
		return ;
	}
	victim->clan=ch->clan;
	victim->clanrank=0;
	victim->seeks=0;

	sprintf(buf,"They are now a %s of your clan.\n\r",
		 clan_table[ch->clan].clan_rank_title[0]);
	send_to_char(buf,ch);
	sprintf(buf,"You are now a %s of clan %s.\n\r",
		 clan_table[ch->clan].clan_rank_title[0],
		 clan_table[ch->clan].name);
	send_to_char(buf,victim);

	return ;
}

void do_demote( CHAR_DATA *ch, char *argument )
{
	char arg1[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	CHAR_DATA *victim;

	argument = one_argument( argument, arg1 );
	if(ch->clan==0)
	{
		send_to_char("You are not in a clan yourself!", ch);
		return ;
	}
	if(!clan_table[ch->clan].can_promote[ch->clanrank])
	{
		send_to_char("You have not the authority to do that.\n\r",ch);
		return ;
	}
	if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
	 {
		  send_to_char( "They aren't playing.\n\r", ch );
		  return;
	 }
	if(victim->clan!=ch->clan)
	{
		send_to_char( "They are not in your clan.\n\r",ch);
		return ;
	}
	if(ch->clanrank<victim->clanrank+1)
	{
		send_to_char("They are too high in rank for your authority.\n\r",ch);
		return ;
	}

	if(victim->clanrank<1)
	{
		send_to_char("They are already of the lowest rank.\n\r",ch);
		return;
	}

	victim->clanrank-=1;

	sprintf(buf,"They are now a %s of your clan.\n\r",
		 clan_table[ch->clan].clan_rank_title[victim->clanrank]);
	send_to_char(buf,ch);
	sprintf(buf,"You are now a %s of clan %s.\n\r",
		 clan_table[ch->clan].clan_rank_title[0],
		 clan_table[ch->clan].name);
	send_to_char(buf,victim);

	return ;
}

void do_outcast( CHAR_DATA *ch, char *argument )
{
	char arg1[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	CHAR_DATA *victim;

	argument = one_argument( argument, arg1 );
	if(ch->clan==0)
	{
		send_to_char("You are not in a clan yourself!", ch);
		return ;
	}
	if(!clan_table[ch->clan].can_remove[ch->clanrank])
	{
		send_to_char("You have not the authority to do that.\n\r",ch);
		return ;
	}
	if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
	 {
		  send_to_char( "They aren't playing.\n\r", ch );
		  return;
	 }
	if(victim->clan!=ch->clan)
	{
		send_to_char( "They are not in your clan.\n\r",ch);
		return ;
	}
	if(ch->clanrank<victim->clanrank+1)
	{
		send_to_char( "You have not the authority to do that.\n\r",ch);
		return ;
	}

	victim->clan=0;
	victim->clanrank=0;

	sprintf(buf,"They are no longer a %s of your clan.\n\r",
		 clan_table[ch->clan].clan_rank_title[0]);
	send_to_char(buf,ch);
	sprintf(buf,"You are no longer a %s of clan %s.\n\r",
		 clan_table[ch->clan].clan_rank_title[0],
		 clan_table[ch->clan].name);
	send_to_char(buf,victim);

	return ;
}


void do_promote( CHAR_DATA *ch, char *argument )
{
	char arg1[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	CHAR_DATA *victim;

	argument = one_argument( argument, arg1 );
	if(ch->clan==0)
	{
		send_to_char("You are not in a clan yourself!", ch);
		return ;
	}
	if(!clan_table[ch->clan].can_promote[ch->clanrank])
	{
		send_to_char("You have not the authority to do that.\n\r",ch);
		return ;
	}
	if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
	 {
		  send_to_char( "They aren't playing.\n\r", ch );
		  return;
	 }
	if(victim->clan!=ch->clan)
	{
		send_to_char( "They are not in your clan.\n\r",ch);
		return ;
	}
	if(ch->clanrank<victim->clanrank+2)
	{
		send_to_char("They are already too high in rank for your authority.\n\r",ch);
		return ;
	}

	victim->clanrank+=1;

	sprintf(buf,"They are now a %s of your clan.\n\r",
		 clan_table[ch->clan].clan_rank_title[victim->clanrank]);
	send_to_char(buf,ch);
	sprintf(buf,"You are now a %s of clan %s.\n\r",
		 clan_table[ch->clan].clan_rank_title[victim->clanrank],
		 clan_table[ch->clan].name);
	send_to_char(buf,victim);

	return ;
}

void do_seek( CHAR_DATA *ch, char *argument )
{
	char arg1[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	int clan;

	argument = one_argument( argument, arg1 );

	if(ch->clan!=0)
	{
		send_to_char("You are already in a clan.\n\r", ch);
		return ;
	}
	if ((clan = clan_lookup(arg1)) == 0)
	 {
	send_to_char("No such clan exists.\n\r",ch);
	return;
	 }

	ch->seeks=clan;
	
	sprintf(buf, "You are seeking to join %s.\n\r",
			  clan_table[clan].name);
	send_to_char(buf,ch);

	return ;
}