/***************************************************************************
 * Clan functions for EmberMUD 0.17 (and maybe later versions up until     *
 * they were removed). I dunno if anyone else is using the old EmberMUD    *
 * code, but what the hey, guess I'll post it and see :)                   *
 *                                                                         *
 * The petition command uses Erwin's board system. Pretty neat, if you     *
 * don't have it, you might wanna look at it...                            *
 *                                                                         *
 * If you choose to use this code, please retain my name in this file and  *
 * send me an email (dwa1844@rit.edu) saying you are using it. Suggestions *
 * for improvement are welcome.                                            *
 ***************************************************************************/

/*
 * Clan accept command written by Rahl (Daniel Anderson).
 */
void do_accept( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char buf[MAX_STRING_LENGTH];
    CLAN_DATA *Clan;

    if ( ch->pcdata->clan == 0 )
    {
    send_to_char( "You aren't even in a clan!\n\r", ch );
    return;
    }

    if ( !is_clan_leader( ch->name, clan_lookup( ch->pcdata->clan ) ) )
    {
    send_to_char( "You aren't the clan leader!\n\r", ch );
    return;
    }

    if ( argument[0] == '\0' )
    {
    send_to_char( "Syntax: accept [character]\n\r", ch );
    return;
    }

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

    if ( victim->pcdata->clan != 0 )
    {
    sprintf( buf, "%s is already in a clan!\n\r", victim->name );
    send_to_char( buf, ch );
    return;
    }

    sprintf( buf, "%d", ch->pcdata->clan );
    Clan = find_clan( buf );

    /* uses the do_test function to check the requirements */
    sprintf( buf, "%s %s", victim->name, Clan->name );
    do_test( ch, buf );

    if ( clan_accept( victim,  Clan->name ) != 0 )
    {
    /* doesn't fit requirements */
    return;
    }
    else
    {
        Clan->members[Clan->num_members] = strdup( victim->name );
        Clan->num_members += 1;
        victim->pcdata->clan = ch->pcdata->clan;
        sprintf( buf, "You are now a member of %s.\n\r",
            vis_clan( ch->pcdata->clan ) );
        send_to_char( buf, victim );
        sprintf( buf, "%s is now a member of %s.\n\r", victim->name,
            vis_clan( ch->pcdata->clan ) );
        log_string( buf );
        send_to_char( buf, ch );
        do_save( victim, "" );
        do_asave( victim, "clans" );
    }
    return;
}


/*
 * Clan disown command written by Rahl (Daniel Anderson).
 */
void do_disown( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char buf[MAX_STRING_LENGTH];
    CLAN_DATA *Clan;
    int count, count2;

    if ( ch->pcdata->clan == 0 )
    {
    send_to_char( "You aren't even in a clan!\n\r", ch );
    return;
    }

    if ( !is_clan_leader( ch->name, clan_lookup( ch->pcdata->clan ) ) )
    {
    send_to_char( "You aren't the clan leader!\n\r", ch );
    return;
    }

    if ( argument[0] == '\0' )
    {
    send_to_char( "Syntax: disown [character]\n\r", ch );
    return;
    }

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

    if ( victim->pcdata->clan != ch->pcdata->clan )
    {
    sprintf( buf, "%s is not in %s!\n\r", victim->name, 
        vis_clan( ch->pcdata->clan ) );
    send_to_char( buf, ch );
    return;
    }

    sprintf( buf, "%d", ch->pcdata->clan );
    Clan = find_clan( buf );

    /* remove them from the clan member list in clans.are */
    for ( count = 0; count < Clan->max_members; count++ )
    {
    if ( Clan->members[count] == victim->name )
    {
        Clan->members[count] = Clan->members[count+1];
        for ( count2 = count + 1; count2 < Clan->max_members - 1; count2++ )
        {
        Clan->members[count2] = Clan->members[count2+1];
        }
    }
    else
        continue;
    }
    Clan->num_members -= 1;
    victim->pcdata->clan = 0;
    sprintf( buf, "You are no longer a member of %s.\n\r",
    vis_clan( ch->pcdata->clan ) );
    send_to_char( buf, victim );
    sprintf( buf, "%s is no longer a member of %s.\n\r", victim->name,
    vis_clan( ch->pcdata->clan ) );
    log_string( buf );
    send_to_char( buf, ch );
    do_save( victim, "" );
    do_asave( victim, "clans" );
    return;
}

/* petition by Rahl (Daniel Anderson) */
void do_petition( CHAR_DATA *ch, char *argument )
{
    char arg[MAX_INPUT_LENGTH];
    CLAN_DATA *pClan;

    one_argument( argument, arg );

    if ( IS_NPC( ch ) )
    {
    send_to_char( "You can't join a clan!\n\r", ch );
    return;
    }

    if ( ch->pcdata->clan != 0 )
    {
    send_to_char( "But you're already in a clan!\n\r", ch );
    return;
    }

    if ( arg[0] == '\0' )
    {
    send_to_char( "Which clan do you wish to petition?\n\r", ch );
    return;
    }

    pClan = find_clan( arg );

    if ( pClan == NULL )
    {
    send_to_char( "That clan does not exist.\n\r", ch );
    send_to_char( "Try using the clan short name shown in 'show clans'\n\r", ch );
    return;
    }

    make_note( "Personal", ch->name, pClan->leader, pClan->visible, 14, 
    "I wish to join your clan." );
    return;
}

/*
 =============================================================================
/   ______ _______ ____   _____   ___ __    _ ______    ____  ____   _____   /
\  |  ____|__   __|  _ \ / ____\ / _ \| \  / |  ____|  / __ \|  _ \ / ____\  \
/  | |__     | |  | |_| | |     | |_| | |\/| | |___   | |  | | |_| | |       /
/  | ___|    | |  | ___/| |   __|  _  | |  | | ____|  | |  | |  __/| |   ___ \
\  | |       | |  | |   | |___| | | | | |  | | |____  | |__| | |\ \| |___| | /
/  |_|       |_|  |_|  o \_____/|_| |_|_|  |_|______|o \____/|_| \_|\_____/  \
\                                                                            /
 ============================================================================

------------------------------------------------------------------------------
ftp://ftp.game.org/pub/mud      FTP.GAME.ORG      http://www.game.org/ftpsite/
------------------------------------------------------------------------------

    This file came from FTP.GAME.ORG, the ultimate source for MUD resources.

------------------------------------------------------------------------------
*/