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