drm/player/
/***************************************************************************
 *  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.                                                  *
 ***************************************************************************/

/***************************************************************************
*	ROM 2.4 is copyright 1993-1995 Russ Taylor			   *
*	ROM has been brought to you by the ROM consortium		   *
*	    Russ Taylor (rtaylor@pacinfo.com)				   *
*	    Gabrielle Taylor (gtaylor@pacinfo.com)			   *
*	    Brian Moore (rom@rom.efn.org)				   *
*	By using this code, you have agreed to follow the terms of the	   *
*	ROM license, in the file Rom24/doc/rom.license			   *
***************************************************************************/

/*************************************************************************** 
*       ROT 1.4 is copyright 1996-1997 by Russ Walsh                       * 
*       By using this code, you have agreed to follow the terms of the     * 
*       ROT license, in the file doc/rot.license                           * 
***************************************************************************/

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

#define MAX_NEST	100
static OBJ_DATA *rgObjNest[MAX_NEST];

CH_CMD ( do_finger )
{
    char arg[MAX_INPUT_LENGTH];
    char buf[MAX_STRING_LENGTH];
    CHAR_DATA *victim;
    FILE *fp;
    bool fOld;

    one_argument ( argument, arg );

    if ( arg[0] == '\0' )
    {
        send_to_char ( "Finger whom?\n\r", ch );
        return;
    }

    if ( ( victim = get_char_world ( ch, arg ) ) != NULL )
    {
        if ( !IS_NPC ( victim ) )
        {
            act ( "$N is on right now!", ch, NULL, victim, TO_CHAR );
            return;
        }
    }

    victim = new_char (  );
    victim->pcdata = new_pcdata (  );
    fOld = FALSE;

    sprintf ( buf, "%s%s", PLAYER_DIR, capitalize ( arg ) );
    if ( ( fp = file_open ( buf, "r" ) ) != NULL )
    {
        int iNest;

        for ( iNest = 0; iNest < MAX_NEST; iNest++ )
            rgObjNest[iNest] = NULL;

        fOld = TRUE;
        for ( ;; )
        {
            char letter;
            char *word;

            letter = fread_letter ( fp );
            if ( letter == '*' )
            {
                fread_to_eol ( fp );
                continue;
            }

            if ( letter != '#' )
            {
                bug ( "Load_char_obj: # not found.", 0 );
                break;
            }

            word = fread_word ( fp );
            if ( !str_cmp ( word, "PLAYER" ) )
                fread_char ( victim, fp );
            else if ( !str_cmp ( word, "OBJECT" ) )
                break;
            else if ( !str_cmp ( word, "O" ) )
                break;
            else if ( !str_cmp ( word, "PET" ) )
                break;
            else if ( !str_cmp ( word, "END" ) )
                break;
            else
            {
                bug ( "Load_char_obj: bad section.", 0 );
                break;
            }
        }
        file_close ( fp );
    }
    if ( !fOld )
    {
        send_to_char ( "No player by that name exists.\n\r", ch );
        free_pcdata ( victim->pcdata );
        free_char ( victim );
        return;
    }
    if ( ( victim->level > LEVEL_ANCIENT ) && ( victim->level > ch->level ) )
    {
        send_to_char ( "The gods wouldn't like that.\n\r", ch );
        free_pcdata ( victim->pcdata );
        free_char ( victim );
        return;
    }
    printf_to_char ( ch,
                     "{Y====================\n\r"
                     "{Y|{cName{x :{g %-12s{x\n\r"
                     "{Y|{cLevel{x:{g %-12d{x\n\r"
                     "{Y|{cClass{x:{g %-12s{x\n\r"
                     "{Y|{cRace{x :{g %-12s{x\n\r"
                     "{Y|{cClan{x :{g %-12s{x\n\r"
                     "{Y|{cRank{x :{g %-12s{x\n\r"
                     "{Y|{cPK{x   :{g %-12ld{x\n\r"
                     "{Y|{cPD{x   :{g %-12ld{x\n\r"
                     "{Y|{cAWin{x :{g %-12d{x\n\r"
                     "{Y|{cAloss{x:{g %-12d{x\n\r"
                     "{Y=====================\n\r" "Last Logged off %s\r",
                     victim->name, victim->level,
                     class_table[victim->class].name,
                     pc_race_table[victim->race].name,
                     clan_table[victim->clan].name,
                     clan_rank_table[victim->clan_rank].title_of_rank[victim->
                                                                      sex],
                     victim->pcdata->pkkills, victim->pcdata->pkdeaths,
                     victim->pcdata->awins, victim->pcdata->alosses,
                     ( char * ) ctime ( &victim->llogoff ) );
    printf_to_char ( ch, "\n\r" );
    free_pcdata ( victim->pcdata );
    free_char ( victim );
    return;
}