mud_dist/area/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvements 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.                     *
 *                                                                         *
 *  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.                                                  *
 ***************************************************************************/

/* $Id: garble.c,v 1.2 2005/02/22 23:55:16 ahsile Exp $ */


/* optional garble code - ahsile */

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

char* translation_garbled( char* speech, int miss_by, char* buf, int buflen )
{
	char*	speech_copy		= NULL;
	char	arg[MAX_STRING_LENGTH]	= "";
	char**	wordarray		= NULL;
	int	wordcount		= 1;
	int	i			= 0; 

	if (miss_by <= 0)
		return speech;

	strncpy(buf, speech, buflen);

	speech_copy = buf;

	while ( strcmp( ( speech_copy = one_argument( speech_copy, arg ) ), "") )
	{
		wordcount++;
	}

	speech_copy = buf;

	wordarray = malloc(sizeof(char**) * wordcount);

	for (i = 0; i < wordcount; i++)
	{
		speech_copy  = one_argument(speech_copy, arg);
		wordarray[i] = malloc(sizeof(char) * strlen(arg) + 1);
		strcpy(wordarray[i], arg);
	}

	for (i = 0; i < wordcount; i++)
	{
		unsigned int j;
		for (j = 0; j < strlen(wordarray[i]); j++)
		{
			if (wordarray[i][j]> 64)
				if (number_percent() < miss_by )
				{
					if (isupper(wordarray[i][j])) 
						wordarray[i][j]+= (number_range(65, 90) - wordarray[i][j]);
					else 
						wordarray[i][j]+= (number_range(97,122) - wordarray[i][j]);
				}
		}
	}
	
	strcpy(buf, "");

	for (i = 0; i < wordcount; i++)
	{
		strcat(buf, wordarray[i]);	
		if (i != wordcount -1)
			strcat(buf, " ");
		free(wordarray[i]);
	}
	free(wordarray);

	return buf;

}