area/
src/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"




void load_balance()
{

  int i;   
  FILE *fp;

  if ((fp = fopen("../txt/balance.txt", "r")) == NULL)
  {
    log_string("Error: balance.txt not found!");
    exit(1);
  }
  balance[0].class = 0;
  balance[0].number_attacks = 0;
  balance[0].damcap = 0;
  balance[0].parry = 0;
  balance[0].dodge = 0;
  balance [0].middy = 0;

  for (i = 0; i < 20; i++)
  {
    balance[i].class = fread_number(fp);
    balance[i].number_attacks = fread_number(fp);
    balance[i].damcap = fread_number(fp);
    balance[i].parry = fread_number(fp);
    balance[i].dodge = fread_number(fp);
    balance[i].middy = fread_number(fp);
  }
  fclose(fp);

}
void save_balance()
{

  FILE *fp;
  int i;

  if ((fp = fopen("../txt/balance.txt","w")) == NULL)
  {
    log_string("Error writing to balance.txt");
    return;
  }
  for (i=0;i<20;i++)
  {
    fprintf(fp, "%d\n", balance[i].class); 
    fprintf(fp, "%d\n", balance[i].number_attacks);
    fprintf(fp, "%d\n", balance[i].damcap);
    fprintf(fp, "%d\n", balance[i].parry);
    fprintf(fp, "%d\n", balance[i].dodge);
    fprintf(fp, "%d\n", balance[i].middy);
  }
  fclose (fp);

}

void do_xcenter(CHAR_DATA *ch, char *argument)
{
int i;

char class[MAX_STRING_LENGTH];
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
unsigned long int value = 0;

argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
argument = one_argument( argument, arg3 );




save_balance();

  if (arg1[0] == '\0')
  {
send_to_char("#CClass#0                    : #GClass         #0-#RNmbrAttacks    #yDamcap    Parry   Dodge   Middy#n\n\r",ch);
send_to_char("\n\r",ch);
for (i=0;i<20;i++)
{
if (i==0) sprintf(class,"#R[#0Demon#R]#n                 ");
if (i==1) sprintf(class,"#y((#LWerewolf#y))#n            ");
if (i==3) sprintf(class,"#0<<#RVampire#0>>#n             ");
if (i==2) sprintf(class,"#P.o0#0Drow#P0o.#n              ");
if (i==4) sprintf(class,"#y{#RTanar'ri#y}#n              ");
if (i==5) sprintf(class,"#y.x#0(#7Angel#0)#yx.#n             ");
if (i==6) sprintf(class,"#0|[#LUndead Knight#0]|#n       ");
if (i==7) sprintf(class,"#g[#rX#g]#oAssassin#g[#rX#g]#n          ");
if (i==8) sprintf(class,"#7(#0*#R=#r-#oWraith#r-#R=#0*#7)#n          ");
if (i==9) sprintf(class,"#Rx#rX#C[#gElemental#C]#rX#Rx#n         ");
if (i==10) sprintf(class,"#y<#7/#y+#7>#nPaladin#7<#y+#7\\#y>#n         ");
if (i==11) sprintf(class,"#C***#yHydra#C***#n             ");
if (i==12) sprintf(class,"#r:=#CDragon#r=:#n              ");
if (i==13) sprintf(class,"#0(#r*#7Zombie#r*#0)#n              ");
if (i==14) sprintf(class,"#l\#0|#l/-#7S#0hinob#7i#l-\#0|#l/#n           ");
if (i==15) sprintf(class,"#r+#y=#r+Human#r+#y=#r+#n             ");
if (i==16) sprintf(class,"#c<>#GG#gian#Gt#c<>#n               ");
if (i==17) sprintf(class,"#r^-^#0Anti-Paladin#r^-^#n      ");
if (i==18) sprintf(class,"#L=#R*#w>#CSky#Wblade#w<#R*#L=#n          ");
if (i==19) sprintf(class,"#w]>#L*#wPriest#L*#w<[#n            ");

sprintf(buf,"%-18s #0: #G%-12d #0->     #R%-2d        #y%-5d     #y%-5d #y%-5d #y%-5d\n\r",class,balance[i].class,balance[i].number_attacks,
        balance[i].damcap, balance[i].parry, balance[i].dodge, balance[i].middy); 
send_to_char(buf,ch);
}}

    value = is_number( arg3 ) ? atoi( arg3 ) : -1;


if (!str_cmp(arg1,"demon"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Leech range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Demon Leech set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[0].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"werewolf"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Parry set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].parry = value;
		return;
		}
	if (!str_cmp(arg2,"dodge"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "dodge range is 20 to 70.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Dodge set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].dodge = value;
		return;
		}
	if (!str_cmp(arg2,"middy"))
		{
		if ( value < 5000 || value > 15000 )
	 	{
		stc( "Talons range is 5000 to 15000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Werewolf Talons set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[1].middy = value;
		return;
		}
}


if (!str_cmp(arg1,"drow"))
{
	if (arg2[0] == '\0')
	{
	send_to_char("numberattacks, damcap, parry, dodge, middy",ch);
	return;
	}
	if (!str_cmp(arg2,"numberattacks"))
	{
		if ( value < 2 || value > 10 )
	 	{
		stc( "Number of Attacks range is 2 to 10.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow number_attacks set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].number_attacks = value;
		return;
		}

	if (!str_cmp(arg2,"damcap"))
		{
		if ( value < 1000 || value > 6000 )
	 	{
		stc( "Damcap range is 1000 to 6000.\n\r", ch );
		return;
		}
	      sprintf(buf,"Drow Damcap set to %d.\n\r",value);
	      send_to_char(buf,ch);
		balance[2].damcap = value;
		return;
		}

	if (!str_cmp(arg2,"parry"))
		{
		if ( value < 20 || value > 70 )
	 	{
		stc( "Parry range is 20 to 70.\n\r", ch );
		return;