/***************************************************************************
 *  ALL I ASK FOR MY WORK:                                                 *
 *  1) Is that you do not remove or modify this comment block.             *
 *  2) Finally any improvements or snippets you make please forward them   *
 *     to me so we can imcorperate them into the latest version. I will    *
 *     post all snippets with the authors named and credited.              *
 *                                                                         *
 *  Last thank you to all the ROM amd MERC folks for this wounderful code  *
 *  base know as ROM.                                                      *
 *                                                                         *
 *          TAKA                                                           *
 *          a_ghost_dancer@excite.com                                      *
 *                                                                         *
 * (C) 2000 TAKA and Ghost Dancer Mud Project                              *
 * *** All rights reserved                                                 *
 *                                                                         *
 ***************************************************************************/

/*
 * (c) TAKA 2000 of Ghost Dancer MUD Project
 * This snippet allows you to save the number of kills and deaths 
 * for a player.
 */
 
in SAVE.C fwrite_char find // Put it AFTER security etc, be careful with the order in the load section or it can get funky as hell DSL
    fprintf( fp, "Scro %d\n", 	ch->lines		);
add this somewhere after that
	fprintf( fp, "Kill %d %d\n", ch->pcdata->kills_mob, ch->pcdata->kills_pc);
	fprintf( fp, "Deat %d %d\n", ch->pcdata->deaths_mob, ch->pcdata->deaths_pc);


in load_char_obj find
    ch->pcdata->condition[COND_HUNGER]	= 48;
add this after that
	ch->pcdata->kills_mob	= 0;
	ch->pcdata->kills_pc	= 0;
	ch->pcdata->deaths_mob	= 0;
	ch->pcdata->deaths_pc	= 0;


in fread_char find
	    KEY( "Desc",	ch->description,	fread_string( fp ) );
add this after
	    if ( !str_cmp( word, "Deat" ))
	    {
			ch->pcdata->deaths_mob = fread_number( fp );
			ch->pcdata->deaths_pc = fread_number( fp );
			fMatch = TRUE;
			break;
	    }

also in fread_char find
	case 'I':
	    KEY( "Id",		ch->id,			fread_number( fp ) );
	    KEY( "InvisLevel",	ch->invis_level,	fread_number( fp ) );
	    KEY( "Inco",	ch->incog_level,	fread_number( fp ) );
	    KEY( "Invi",	ch->invis_level,	fread_number( fp ) );
		KEY( "Incr",	ch->pcdata->incarnations, fread_number(fp) );
	    break;
add this after
	case 'K':
	    if ( !str_cmp( word, "Kill" ))
	    {
			ch->pcdata->kills_mob = fread_number( fp );
			ch->pcdata->kills_pc = fread_number( fp );
			fMatch = TRUE;
			break;
	    }
	    break;

in MERC.H in struct pc_data find
    char *         alias_sub[MAX_ALIAS]; 
add this after // MOVE it after security or big boom ;p DSL
    int			kills_mob;
    int			kills_pc;
    int			deaths_mob;
    int			deaths_pc;

in FIGHT.C in bool damage find
		/*
		 * Death trigger
		 */
		if (IS_NPC (victim) && HAS_TRIGGER (victim, TRIG_DEATH)) {
			victim->position = POS_STANDING;
			mp_percent_trigger (victim, ch, NULL, NULL, TRIG_DEATH);
		}

		raw_kill (victim);
add this after
		/*
		 * (c) 2000 TAKA of GhostMud and the Ghost Dancer MUD Project
		 * this adds to the counters for deaths and kills
		 */
		if (IS_NPC(ch)) /* is a mob */
		{
			if (!IS_NPC(victim)) /* mob kills character */
				victim->pcdata->deaths_mob += 1;
		}
		else
		{
			if IS_NPC(victim)
			{
				ch->pcdata->kills_mob += 1;
			}
			else if (victim == ch) /* Added so self deaths don't count DSL */
			{
				victim->pcdata->deaths_pc += 0;
				ch->pcdata->kills_pc += 0;
			}
			else
			{
				victim->pcdata->deaths_pc += 1;
				ch->pcdata->kills_pc += 1;
			}
		}

** optional **
in ACT_WIZ.C in do_mstat
find short description display and add this after that
	/* 
	 * TAKA (c) 2000 
	 * kill and death counters display in stat
	 */
	if (!IS_NPC(victim))
	{
		sprintf(buf,
			"{GMobile deaths/kills {W%5d{G/{W%-5d{x\n\r{GPC deaths/kills {W%5d{G/{W%-5d{x\n\r",
			victim->pcdata->deaths_mob, victim->pcdata->kills_mob,
			victim->pcdata->deaths_pc,  victim->pcdata->kills_pc );
		send_to_char(buf,ch);
	}

in do_mset
find the syntax listing and add these
	send_to_char( "    {Gpckill pcdeath mobkill mobdeath{x\n\r",	ch );
also near the bottom add these
    /* 
     * TAKA (c) 2000 set kills and deaths
     * these should be places somewhere after thirst and hunger 
     * sets
     */
    if ( !str_prefix( arg2, "pckill" ) )
    {
		if ( IS_NPC( victim ) )
		{
			send_to_char( "{RNot on NPC's.{x\n\r", ch );
			return;
		}
		if ( !is_number( arg3 ) )
		{
			send_to_char( "{RValue must be numeric.{x\n\r", ch );
			return;
		}
		value = atoi( arg3 );

		if ( value < 0 || value > 30000 )
		{
		    send_to_char( "{RPC Kills value must be 0 to 30,000!{x\n\r", ch );
		    return;
		}

		victim->pcdata->kills_pc = value;
		return;
    }

    if ( !str_prefix( arg2, "pcdeaths" ) )
    {
		if ( IS_NPC( victim ) )
		{
			send_to_char( "{RNot on NPC's.{x\n\r", ch );
			return;
		}
		if ( !is_number( arg3 ) )
		{
			send_to_char( "{RValue must be numeric.{x\n\r", ch );
			return;
		}
		value = atoi( arg3 );

		if ( value < 0 || value > 30000 )
		{
		    send_to_char( "{RPC Deaths value must be 0 to 30,000!{x\n\r", ch );
		    return;
		}

		victim->pcdata->deaths_pc = value;
		return;
    }

    if ( !str_prefix( arg2, "mobkill" ) )
    {
		if ( IS_NPC( victim ) )
		{
			send_to_char( "{RNot on NPC's.{x\n\r", ch );
			return;
		}
		if ( !is_number( arg3 ) )
		{
			send_to_char( "{RValue must be numeric.{x\n\r", ch );
			return;
		}
		value = atoi( arg3 );

		if ( value < 0 || value > 30000 )
		{
		    send_to_char( "{RMob Kills value must be 0 to 30,000!{x\n\r", ch );
		    return;
		}

		victim->pcdata->kills_mob = value;
		return;
    }

    if ( !str_prefix( arg2, "mobdeaths" ) )
    {
		if ( IS_NPC( victim ) )
		{
			send_to_char( "{RNot on NPC's.{x\n\r", ch );
			return;
		}
		if ( !is_number( arg3 ) )
		{
			send_to_char( "{RValue must be numeric.{x\n\r", ch );
			return;
		}
		value = atoi( arg3 );

		if ( value < 0 || value > 30000 )
		{
		    send_to_char( "{RMob Deaths value must be 0 to 30,000!{x\n\r", ch );
		    return;
		}

		victim->pcdata->deaths_mob = value;
		return;
    }
    /* end of taka set kills/deaths logic */


Please include in your help file that death and kill counters is a Taka snippet with my
email address of a_ghost_dancer@excite.com
Also please email me and let me know you are using my snippet we now have 30+
muds using snippets and 3 muds running the GhostMud codebase.
I always like to know my code is put to good use and people like it.