#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 < 21; 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<41;i++) { 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_SORCERER) {j=11; sprintf(class,"Sorcerer");} else if (ch->class == CLASS_WIZARD) {j=12; sprintf(class,"War Wizard");} else if (ch->class == CLASS_HYDRA) {j=13; sprintf(class,"Hydra");} else if (ch->class == CLASS_FAERIE) {j=14; sprintf(class,"Faerie");} else if (ch->class == CLASS_BLADE_MASTER) {j=15; sprintf(class,"Blade Master");} 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_SHINOBI) {j=19; sprintf(class,"Shinobi");} else if (ch->class == CLASS_HUMAN) {j=20; sprintf(class,"TechnoMage");} 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->pcdata->switchname,class,best[j].name); else sprintf(buf,"#L%s#0 has taken the ranking of strongest #G%s#n.", ch->pcdata->switchname,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->pcdata->switchname,class,best[j].name); else sprintf(buf,"#L%s#0 has taken the ranking of strongest #G%s#n.", ch->pcdata->switchname,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); for (i=0;i<21;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,"#0[#P*#0]#rSorcerer#0[#P*#0]#n "); if (i==12) sprintf(class,"#n{{#CWar Wizard#n}} "); if (i==13) sprintf(class,"#C***#yHydra#C***#n "); if (i==14) sprintf(class,"#p{#0-#p}#0Faerie#p{#0-#p}#n "); if (i==15) sprintf(class,"#c-=#RBlade#yMaster#c=-#n "); if (i==16) sprintf(class,"#r:=#CDragon#r=:#n "); if (i==17) sprintf(class,"#C[#c-#C=#r<<AntiPaladin>>#C=#c-#C]#n "); if (i==18) sprintf(class,"#0(#r*#7Zombie#r*#0)#n "); if (i==19) sprintf(class,"#l\#0|#l/-#7S#0hinob#7i#l-\#0|#l/#n "); if (i==20) sprintf(class,"#r+#y=#r+TechnoMage#r+#y=#r+#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<21;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; } }