#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 "merc.h"
/*
void do_legendwho( CHAR_DATA *ch, char *argument)
{
DESCRIPTOR_DATA *d;
CHAR_DATA *gch;
char const *legend;
char buf[MAX_STRING_LENGTH];
send_to_char("Name Mightrate Legend\n\r",ch);
for (d = descriptor_list; d!= NULL; d= d->next)
{
if (d->connected != CON_PLAYING) continue;
if ((gch = d->character) == NULL) continue;
if (IS_IMMORTAL(gch)) continue;
if (gch->pcdata->legend == 20) legend = "#0Godlike#n";
else if (gch->pcdata->legend == 19)legend = "#7Almighty#n";
else if (gch->pcdata->legend == 18)legend = "#cSupreme#n";
else if (gch->pcdata->legend == 17)legend = "#RMaster#n";
else if (gch->pcdata->legend == 16)legend = "#rChampion#n";
else if (gch->pcdata->legend == 15)legend = "#LCavalier#n";
else if (gch->pcdata->legend == 14)legend = "#CGrand Duke#n";
else if (gch->pcdata->legend == 13)legend = "#GLord#n";
else if (gch->pcdata->legend == 12)legend = "#gSovereign#n";
else if (gch->pcdata->legend == 11)legend = "#LEmperor#n";
else if (gch->pcdata->legend == 10)legend = "#lKing#n";
else if (gch->pcdata->legend == 9)legend = "#CDuke#n";
else if (gch->pcdata->legend == 8)legend = "#oLegend#n";
else if (gch->pcdata->legend == 7)legend = "#PMystical#n";
else if (gch->pcdata->legend == 6)legend = "#pMyth#n";
else if (gch->pcdata->legend == 5)legend = "#CHero#n";
else if (gch->pcdata->legend == 4)legend = "#LKnight#n";
else if (gch->pcdata->legend == 3)legend = "#RSavior#n";
else if (gch->pcdata->legend == 2)legend = "#rCitizen#n";
else if (gch->pcdata->legend == 1)legend = "#GSerf#n";
else legend = "#RNone#n";
sprintf(buf,"#R%-24s #y%-6d #L%s#n\n\r",gch->pcdata->switchname,getMight(gch),legend);
send_to_char(buf,ch);
}
}
*/
void load_best()
{
int i;
FILE *fp;
if ((fp = fopen("../txt/best.txt", "r")) == NULL)
{
log_string("Error: best.txt not found!");
exit(1);
}
best[0].name = " ";
best[0].status = 0;
best[0].pkscore = 0;
for (i = 0; i < 33; i++)
{
best[i].name = fread_string(fp);
best[i].status = fread_number(fp);
best[i].pkscore = fread_number(fp);
}
fclose(fp);
}
void save_best()
{
FILE *fp;
int i;
if ((fp = fopen("../txt/best.txt","w")) == NULL)
{
log_string("Error writing to best.txt");
return;
}
for (i=0;i<33;i++) // was 41
{
fprintf(fp, "%s~\n", best[i].name);
fprintf(fp, "%d\n", best[i].status);
fprintf(fp, "%d\n", best[i].pkscore);
}
fclose (fp);
}
void update_best( CHAR_DATA *ch )
{
int j;
char buf[MAX_STRING_LENGTH];
char class[MAX_STRING_LENGTH];
bool changed = FALSE;
if (IS_NPC(ch)) return;
if (ch->level > 6) return;
if (ch->level < 3) return;
if (ch->class == 0) return;
if (ch->class == CLASS_DEMON) {j=0; sprintf(class,"Demon");}
else if (ch->class == CLASS_WEREWOLF) {j=1; sprintf(class,"Werewolf");}
else if (ch->class == CLASS_VAMPIRE) {j=3; sprintf(class,"Vampire");}
else if (ch->class == CLASS_DROW) {j=2; sprintf(class,"Drow");}
else if (ch->class == CLASS_TANARRI) {j=4; sprintf(class,"Tanarri");}
else if (ch->class == CLASS_ANGEL) {j=5; sprintf(class,"Angel");}
else if (ch->class == CLASS_UNDEAD_KNIGHT){j=6; sprintf(class,"Undead Knight");}
else if (ch->class == CLASS_ASSASSIN) {j=7; sprintf(class,"Assassin");}
else if (ch->class == CLASS_WRAITH) {j=8; sprintf(class,"Wraith");}
else if (ch->class == CLASS_ELEMENTAL) {j=9; sprintf(class,"Elemental");}
else if (ch->class == CLASS_PALADIN) {j=10; sprintf(class,"Paladin");}
else if (ch->class == CLASS_HUMAN) {j=11; sprintf(class,"Technomage");}
else if (ch->class == CLASS_SHINOBI) {j=12; sprintf(class,"Shinobi");}
else if (ch->class == CLASS_HYDRA) {j=13; sprintf(class,"Hydra");}
else if (ch->class == CLASS_SKYBLADE) {j=14; sprintf(class,"Skyblade");}
else if (ch->class == CLASS_GIANT) {j=15; sprintf(class,"Giant");}
else if (ch->class == CLASS_DRAGON) {j=16; sprintf(class,"Dragon");}
else if (ch->class == CLASS_ANTIPALADIN) {j=17; sprintf(class,"Anti-Paladin");}
else if (ch->class == CLASS_ZOMBIE) {j=18; sprintf(class,"Zombie");}
else if (ch->class == CLASS_BLADE_MASTER) {j=19; sprintf(class,"Blade Master");}
else if (ch->class == CLASS_PRIEST) {j=20; sprintf(class,"Priest");}
else if (ch->class == CLASS_UNDEAD_LYCAN) {j=21; sprintf(class, "Undead Lycan");}
else if (ch->class == CLASS_HELLS_SOLDIER){j=22; sprintf(class, "Hells Soldier");}
else if (ch->class == CLASS_GAIA_WOLF) {j=23; sprintf(class, "Gaia Wolf");}
else if (ch->class == CLASS_SHADOWBORN) {j=24; sprintf(class, "Shadowborn");}
else if (ch->class == CLASS_DRUID) {j=25; sprintf(class, "Druid");}
else if (ch->class == CLASS_SHADOW_DRAGON) {j=26; sprintf(class, "Shadow Dragon");}
else if (ch->class == CLASS_SHADOW_FIEND) {j=27; sprintf(class, "Shadow Fiend");}
else if (ch->class == CLASS_STALKER) {j=28; sprintf(class, "Stalker");}
else if (ch->class == CLASS_HELL_SPAWN) {j=29; sprintf(class, "Hell Spawn");}
else if (ch->class == CLASS_BLACK_ASSASSIN) {j=30; sprintf(class, "Black Assassin");}
else if (ch->class == CLASS_VAMPIRIC_MIST) {j=31; sprintf(class, "Vampiric Mist");}
else if (ch->class == CLASS_GHOUL) {j=32; sprintf(class,"Ghoul");}
else
{
sprintf(buf,"update_best: %s has bad class %d",ch->name,ch->class);
log_string(buf);
return;
}
if (ch->pStatus == best[j].status)
{
if (!str_cmp(ch->name,best[j].name) && getMight(ch) != best[j].pkscore)
{
best[j].pkscore = getMight(ch);
changed = TRUE;
}
if (str_cmp(ch->name,best[j].name) && ch->pStatus >= best[j].status && getMight(ch) > best[j].pkscore)
{
if (str_cmp(best[j].name,"None"))
sprintf(buf,"#L%s#0 has taken the ranking of strongest #G%s#0 from #L%s#n.",
ch->name,class,best[j].name);
else
sprintf(buf,"#L%s#0 has taken the ranking of strongest #G%s#n.",
ch->name,class);
do_info(ch,buf);
best[j].status = ch->pStatus;
free_string(best[j].name);
best[j].name = str_dup(ch->name);
best[j].pkscore = getMight(ch);
changed = TRUE;
}
}
if (ch->pStatus != best[j].status)
{
if (!str_cmp(ch->name,best[j].name) && ch->pStatus != best[j].status)
{
free_string(best[j].name);
best[j].pkscore = getMight(ch);
changed = TRUE;
}
else if (str_cmp(ch->name,best[j].name) && ch->pStatus > best[j].status)
{
if (str_cmp(best[j].name,"None"))
sprintf(buf,"#L%s#0 has taken the ranking of strongest #G%s#0 from #L%s#n.",
ch->name,class,best[j].name);
else
sprintf(buf,"#L%s#0 has taken the ranking of strongest #G%s#n.",
ch->name,class);
do_info(ch,buf);
best[j].status = ch->pStatus;
free_string(best[j].name);
best[j].name = str_dup(ch->name);
best[j].pkscore = getMight(ch);
changed = TRUE;
}
}
if (changed) save_best();
return;
}
void do_topstatus(CHAR_DATA *ch, char *argument)
{
int i;
char buf[MAX_STRING_LENGTH];
char class[MAX_STRING_LENGTH];
send_to_char("#CClass#0 : #GName #0-> #RStatus #yMightrate#n\n\r",ch);
send_to_char("\n\r",ch);
save_best();
for (i=0;i<33;i++)
{
if (i==0) cprintf(class,"#R[#0Demon#R]#n ");
if (i==1) cprintf(class,"#y((#LWerewolf#y))#n ");
if (i==3) cprintf(class,"#0<<#RVampire#0>>#n ");
if (i==2) cprintf(class,"#P.o0#0Drow#P0o.#n ");
if (i==4) cprintf(class,"#y{#RTanar'ri#y}#n ");
if (i==5) cprintf(class,"#y.x#0(#7Angel#0)#yx.#n ");
if (i==6) cprintf(class,"#0|[#LUndead Knight#0]|#n ");
if (i==7) cprintf(class,"#g[#rX#g]#oAssassin#g[#rX#g]#n ");
if (i==8) cprintf(class,"#7(#0*#R=#r-#oWraith#r-#R=#0*#7)#n ");
if (i==9) cprintf(class,"#Rx#rX#C[#gElemental#C]#rX#Rx#n ");
if (i==10) cprintf(class,"#y<#7/#y+#7>#nPaladin#7<#y+#7\\#y>#n ");
if (i==11) cprintf(class,"#0[#P*#0]#rTechnomage#0[#P*#0]#n ");
if (i==12) cprintf(class,"#l\#0|#l/-#7S#0hinob#7i#l-\#0|#l/#n ");
if (i==13) cprintf(class,"#C***#yHydra#C***#n ");
if (i==14) cprintf(class,"#L=#R*#w>#CSky#Wblade#w<#R*#L=#n ");
if (i==15) cprintf(class,"#c<>#GG#gian#Gt#c<>#n ");
if (i==16) cprintf(class,"#r:=#CDragon#r=:#n ");
if (i==17) cprintf(class,"#r^-^#0Anti-Paladin#r^-^#n ");
if (i==18) cprintf(class,"#0(#r*#7Zombie#r*#0)#n ");
if (i==19) cprintf(class,"Blade Master ");
if (i==20) cprintf(class,"#w]>#L*#wPriest#L*#w<[#n ");
if (i==21) cprintf(class,"#r[#yUndead Lycan#r]#n ");
if (i==22) cprintf(class,"#g[#rH#gell#rs S#goldie#rr#g]#n ");
if (i==23) cprintf(class,"#C-=#y(#rx#gG#Gaia Wol#gf#rx#y)#C=-#n ");
if (i==24) cprintf(class,"#g[#rS#chado#rw#cb#ro#cr#rn#g]#n ");
if (i==25) cprintf(class,"#C-=#y(#rx#gDruid#rx#y)#C=-#n ");
if (i==26) cprintf(class,"#g[#cS#lhado#cw #cD#lrago#cn#g]#n ");
if (i==27) cprintf(class,"#g[#rS#chado#rw #rF#cien#rd#g]#n ");
if (i==28) cprintf(class, "#r[#gS#rtalke#gr]#n ");
if (i==29) cprintf(class, "#g[#rH#gELL#rS S#gPAW#rN#g]#n ");
if (i==30) cprintf(class, "#G{#g/*\#G}#CBlack Assassin#G{#g/*\#G}#n ");
if (i==31) cprintf(class, "#g<<#rVampyric #oMist#g>>#n ");
if (i==32) cprintf(class, "#GX#gx#G(#gGhoul#G)#gx#GX#n ");
sprintf(buf,"%-18s #0: #G%-12s #0-> #R%-2d #y%-5d\n\r",class,best[i].name,best[i].status,best[i].pkscore);
send_to_char(buf,ch);
}
}
void do_resettopstatus(CHAR_DATA *ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
int x,i;
argument = one_argument(argument, arg);
if (!str_cmp(arg,"all"))
{
for (i=0;i<33;i++)
{
best[i].status = 0;
best[i].pkscore = 0;
free_string(best[i].name);
best[i].name = str_dup("None");
}
return;
}
else if (!is_number(arg))
{
send_to_char("Please enter a number to which top line to reset\n\r",ch);
return;
}
if (is_number(arg))
{
x = atoi(arg);
best[x].status = 0;
best[x].pkscore = 0;
free_string(best[x].name);
best[x].name = str_dup("None");
return;
}
}