#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;