eotc-rot/data/helps/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
#include "magic.h"
#include "recycle.h"
#include "tables.h"
#include "lookup.h"



void load_leaderboard()
{
  FILE *fp;

  if ((fp = fopen("../txt/leader.txt", "r")) == NULL)
  {   
    log_string("Error: leader.txt not found!");
    exit(1);
  }
  leader_board.bestpk_name = fread_string(fp);  
  leader_board.bestpk_number = fread_number(fp);
  leader_board.pk_name = fread_string(fp);
  leader_board.pk_number = fread_number(fp);
  leader_board.pd_name = fread_string(fp);
  leader_board.pd_number = fread_number(fp);
  leader_board.mk_name = fread_string(fp);
  leader_board.mk_number = fread_number(fp);
  leader_board.md_name = fread_string(fp);
  leader_board.md_number = fread_number(fp);
  leader_board.tt_name = fread_string(fp);
  leader_board.tt_number = fread_number(fp);
  leader_board.qc_name = fread_string(fp);
  leader_board.qc_number = fread_number(fp);
  fclose(fp);
}

void save_leaderboard()
{
  FILE *fp;

  if ((fp = fopen("../txt/leader.txt","w")) == NULL)
  {
    log_string("Error writing to leader.txt");
    return;
  }
  fprintf(fp, "%s~\n", leader_board.bestpk_name); 
  fprintf(fp, "%d\n", leader_board.bestpk_number);
  fprintf(fp, "%s~\n", leader_board.pk_name);
  fprintf(fp, "%d\n", leader_board.pk_number);
  fprintf(fp, "%s~\n", leader_board.pd_name);     
  fprintf(fp, "%d\n", leader_board.pd_number);
  fprintf(fp, "%s~\n", leader_board.mk_name);
  fprintf(fp, "%d\n", leader_board.mk_number);
  fprintf(fp, "%s~\n", leader_board.md_name);
  fprintf(fp, "%d\n", leader_board.md_number);
  fprintf(fp, "%s~\n", leader_board.tt_name);
  fprintf(fp, "%d\n", leader_board.tt_number);
  fprintf(fp, "%s~\n", leader_board.qc_name);
  fprintf(fp, "%d\n", leader_board.qc_number);
  fclose (fp);
}

void do_leader( CHAR_DATA *ch, char *argument )
{    
  char buf[MAX_STRING_LENGTH];

  if (IS_NPC(ch)) return;

  stc("{Y-{8=========================={YLEADER BOARD{8=========================={Y-{x\n\r\n\r",ch);

  send_to_char("   {yMr. Best PK'er   {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.bestpk_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith a {G%d {yPK score{x\n\r",leader_board.bestpk_number);
  send_to_char(buf,ch);

  send_to_char("   {yMr. Deadly       {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.pk_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith {G%d {ypkills{x\n\r",leader_board.pk_number);
  send_to_char(buf,ch);

  send_to_char("   {yMr. Pathetic     {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.pd_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith {G%d {ypdeaths{x\n\r",leader_board.pd_number);
  send_to_char(buf,ch);
  
  send_to_char("   {yMr. Slayer       {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.mk_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith {G%d {ymkills{x\n\r",leader_board.mk_number);
  send_to_char(buf,ch);
  
  send_to_char("   {yMr. Wimpy        {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.md_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith {G%d {ymdeaths{x\n\r",leader_board.md_number);
  send_to_char(buf,ch);
  
  send_to_char("   {yMr. No life      {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.tt_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith {G%d {yHours played{x\n\r",leader_board.tt_number);
  send_to_char(buf,ch);
  
  send_to_char("   {yMr. Questor      {C--->    ",ch);
  sprintf(buf, "{G%-13s",leader_board.qc_name);
  send_to_char(buf,ch);
  sprintf(buf, " {ywith {G%d {yQuests completed{x\n\r",leader_board.qc_number);
  send_to_char(buf,ch);

  
  stc("Y-{8=========================={YLEADER BOARD{8=========================={Y-{x\n\r\n\r",ch);

  return;
}

void check_leaderboard( CHAR_DATA *ch )
{
  bool changed = FALSE;

  if (IS_NPC(ch)) return;
  if (ch->level > 206) return;
  if (get_ratio(ch) > leader_board.bestpk_number || !str_cmp(leader_board.bestpk_name , ch->name))
  {
    leader_board.bestpk_number = get_ratio(ch);
    free_string(leader_board.bestpk_name);
    leader_board.bestpk_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (ch->mdeaths > leader_board.md_number)
  {
    leader_board.md_number = ch->mdeaths;
    free_string(leader_board.md_name);
    leader_board.md_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (ch->pcdata->mkills > leader_board.mk_number)
  {
    leader_board.mk_number = ch->pcdata->mkills;
    free_string(leader_board.mk_name);
    leader_board.mk_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (ch->pkill > leader_board.pk_number)
  {
    leader_board.pk_number = ch->pkill;
    free_string(leader_board.pk_name);
    leader_board.pk_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (ch->pdeath > leader_board.pd_number)
  {
    leader_board.pd_number = ch->pdeath;
    free_string(leader_board.pd_name);
    leader_board.pd_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (ch->questscomp > leader_board.qc_number)
  {
    leader_board.qc_number = ch->questscomp;
    free_string(leader_board.qc_name);
    leader_board.qc_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (get_age(ch)-17*2  > leader_board.tt_number)
  {
    leader_board.tt_number = (get_age(ch)-17)*2;
    free_string(leader_board.tt_name);
    leader_board.tt_name = str_dup(ch->name);
    changed = TRUE;
  }
  if (changed) save_leaderboard();
  return;
}

void do_leaderclear(CHAR_DATA *ch, char *argument )
{
  if (IS_NPC(ch)) return;
  if (ch->level < 7) return;
  free_string(leader_board.bestpk_name);
  leader_board.bestpk_name = str_dup("Noone");
  leader_board.bestpk_number = 0;
  free_string(leader_board.pk_name);
  leader_board.pk_name = str_dup("Noone");
  leader_board.pk_number = 0;
  free_string(leader_board.pd_name);
  leader_board.pd_name = str_dup("Noone");
  leader_board.pd_number = 0;
  free_string(leader_board.md_name);
  leader_board.md_name = str_dup("Noone");
  leader_board.md_number = 0;
  free_string(leader_board.mk_name);
  leader_board.mk_name = str_dup("Noone");
  leader_board.mk_number = 0;
  free_string(leader_board.qc_name);
  leader_board.qc_name = str_dup("Noone");
  leader_board.qc_number = 0;
  free_string(leader_board.tt_name);
  leader_board.tt_name = str_dup("Noone");
  leader_board.tt_number = 0;
  save_leaderboard();
  send_to_char("Leader board cleared.\n\r",ch);
  return;
}