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    initialize_spell_types args((void));
int focus_level args ((long total));
long focus_left args ((long total));

int focus_dam args ((CHAR_DATA *ch));
int focus_str args ((CHAR_DATA *ch));
int focus_ac args ((CHAR_DATA *ch));
int focus_move args ((CHAR_DATA *ch));
int focus_hit args ((CHAR_DATA *ch));
int focus_dex args ((CHAR_DATA *ch));
int focus_hp args ((CHAR_DATA *ch));
int focus_con args ((CHAR_DATA *ch));
int focus_sorc args ((CHAR_DATA *ch));
int focus_sorcbonus args ((CHAR_DATA *ch));
int focus_mana args ((CHAR_DATA *ch));
int focus_int args ((CHAR_DATA *ch));
int focus_save args ((CHAR_DATA *ch));
int focus_wis args ((CHAR_DATA *ch));

int creations_today;
long connections_today;
long logins_today;
int max_on;
int max_ever;
long commands_today;
long socials_today;
long mobdeaths_today;
long mobkills_today;
int pkills_today;



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

    sprintf ( buf, "\n\r          {gOn {GEotC{g, there are {G%d{g areas which contain {G%d{g\n\r", top_area, top_room );
    send_to_char(buf, ch);
    sprintf ( buf, "          rooms total. Need assistance? Don't worry, EotC has a big help\n\r" );
    send_to_char(buf, ch);
    sprintf ( buf, "          archive, containing {G%d{g helpfiles, easily accessable with the\n\r", top_help );
    send_to_char(buf, ch);
    sprintf ( buf, "          'help' command. If you feel like socializing, you can show lots\n\r" );
    send_to_char(buf, ch);
    sprintf ( buf, "          of emotions, {G%d{g to be exact. For a list of socials, type 'socials'.\n\r", MAX_SOCIALS);
    send_to_char(buf, ch);
    sprintf ( buf, "\n\r          {gSince the last boot, a total of {G%d{g new player%s have created.\n\r", creations_today, creations_today == 1 ? "" : "s" );
    send_to_char(buf, ch);
    sprintf ( buf, "\n\r          Also since the last boot, a total of {G%ld{g connections have\n\r", connections_today );
    send_to_char(buf, ch);
    sprintf ( buf, "          been made to EotC, and {G%ld{g complete logins have been done.\n\r", logins_today );
    send_to_char(buf, ch);
    sprintf ( buf, "\n\r          The max people online at once today was {G%d{g, the most\n\r", max_on );
    send_to_char(buf, ch);
    sprintf ( buf, "          online ever at once was {G%d{g.\n\r", max_ever );
    send_to_char(buf, ch);
    sprintf ( buf, "\n\r          People have been active, executing {G%ld{g command%s and {G%ld{g social%s,\n\r", commands_today, commands_today == 1 ? "" : "s", socials_today, socials_today == 1 ? "" : "s" );
    send_to_char(buf, ch);
    sprintf ( buf, "          as well as having died to {G%ld{g mobiles and killed {G%ld{g.\n\r", mobdeaths_today, mobkills_today );
    send_to_char(buf, ch);
    sprintf ( buf, "\n\r          {G%d{g real pkill%s %s occured.{x\n\r", 
	pkills_today, pkills_today == 1 ? "" : "s", pkills_today == 1 ? "has" : "have" );
    send_to_char(buf, ch);
    return;
}


/* Slist written by Sirius [o0Sirius0o@hotmail.com]
* Add this to act_info.c, this was written for Rom2.4
* Some of the for loops levels for (level = 1 ;level <= 101;level++)
* may have to be changed depending on your Max Mortal Level.
*/
void do_slist(CHAR_DATA *ch,char *argument) {
char arg1[MIL],group[MSL];
int skill,class = 0,cl = 0;
int sn = 0,col = 0,level = 0, sp,gr;
int skCount = 0,spCount = 0, class_name = 0, gn = 0;
bool found = FALSE;
argument = one_argument(argument,arg1);

    if (arg1[0] == '\0') {
        printf_to_char(ch,"Enter the name of the spell or class.\n\r");
        return;
    }
        if (((skill = skill_lookup(arg1)) == -1) && (cl = class_lookup(arg1)) == -1) {
        printf_to_char(ch,"That is not a valid class or skill.\n\r");
        return;
    }

    if (((skill = skill_lookup(arg1)) == -1) && (cl = class_lookup(arg1)) != -1) {
      for (class_name = 0; class_name < MAX_CLASS; class_name++) {
          if (!str_cmp(arg1, class_table[class_name].name))
            break;
      }
      if (class_name == MAX_CLASS) {
        send_to_char( "Please spell out the full class name.\n\r",ch);
        return;
      } else {
          printf_to_char(ch,"{CAviable skill/spells for the class{c: {W%s{x\n\r", class_table[cl].name);
          printf_to_char(ch,"{cSpells{W:{x\n\r");
          for (level = 1 ;level <= 201;level++) {
              for (sn = 0; sn < MAX_SKILL; sn++) {
                  if (skill_table[sn].skill_level[cl] > 100)
                      continue;
                  if (skill_table[sn].skill_level[cl] != level)
                      continue;
                  if (skill_table[sn].spell_fun == spell_null)
                      continue;
                  printf_to_char(ch, "{B[{C%3d{B] {W%-18s{x",
                  level,
                  skill_table[sn].name);
                  spCount++;
                  if (++col % 3 == 0)
                      send_to_char("\n\r",ch);
              }
          }
          send_to_char("\n\r",ch); col = 0;
          printf_to_char(ch, "{CTotal spells found{g: {W%d{x\n\r",spCount);
          printf_to_char(ch, "{cSkills{W:{x\n\r");
          for (level = 1 ;level <= 201;level++) {
              for (sn = 0; sn < MAX_SKILL; sn++) {
                  if (skill_table[sn].skill_level[cl] > 100)
                      continue;
                  if (skill_table[sn].skill_level[cl] != level)
                      continue;
                  if (skill_table[sn].spell_fun != spell_null)
                      continue;
                  printf_to_char(ch, "{B[{C%3d{B] {W%-18s{x",
                  level,
                  skill_table[sn].name);
                  skCount++;
                  if (++col % 3 == 0)
                      send_to_char("\n\r",ch);
              }
          }
          send_to_char("\n\r",ch);
          printf_to_char(ch, "{cBase Group{W: {W%s{x\n\r",class_table[cl].base_group);
          gn = 0; col = 0; level = 1;
          gn = group_lookup(class_table[class].base_group);
          printf_to_char(ch, "{CSkills included with {W%s{x.{x\n\r",class_table[cl].base_group);
              for (sn = 0; sn < MAX_IN_GROUP; sn++) {
                  if (group_table[gn].spells[sn] == NULL)
                      continue;
                  printf_to_char(ch,"{W%-18s{x",group_table[gn].spells[sn]);
                  if (++col % 3 == 0)
                      send_to_char("\n\r",ch);
              }
          send_to_char("\n\r",ch);
          printf_to_char(ch, "{cDefault Group{W: {W%s{x\n\r",class_table[cl].default_group);
          gn = 0; col = 0; level = 1;
          gn = group_lookup(class_table[cl].default_group);
          printf_to_char(ch, "{CSkills included with {W%s{x.{x\n\r",class_table[cl].default_group);
              for (sn = 0; sn < MAX_IN_GROUP; sn++) {
                  if (group_table[gn].spells[sn] == NULL)
                      continue;
                  printf_to_char(ch,"{W%-18s{x",group_table[gn].spells[sn]);
                  if (++col % 3 == 0)
                      send_to_char("\n\r",ch);
              }
          send_to_char("\n\r",ch);
          printf_to_char(ch, "{CTotal skills found{g: {W%d{x\n\r",skCount);
          printf_to_char(ch, "{WTotal skills/spells found: {B%d{x\n\r",(spCount + skCount));
          return;
      }
    }
    if (((skill = skill_lookup(arg1)) != -1) && (cl = class_lookup(arg1)) == -1) {
        for (gr = 1; gr < MAX_GROUP; gr++) {
          if (group_table[gr].name == NULL) {
            continue;
          }
          for (sp = 0; sp < MAX_IN_GROUP; sp++) {
            if (group_table[gr].spells[sp] == NULL) {
              continue;
            }
            if(group_table[gr].spells[sp] == skill_table[skill].name) {
              found = TRUE;
              sprintf(group,"%s",capitalize(group_table[gr].name));
              break;
            }
          }
        }
        printf_to_char(ch,"{CSettings for skill/spell{c: {W%s{x\n\r",skill_table[skill].name);
        if (found)
          printf_to_char(ch,"{CIn the group: {W%s{C.{x\n\r",group);
        else
          printf_to_char(ch,"{CIn the group: {WUnknown{C!{x\n\r");
        send_to_char("{cClass       Level Gain Wait-Time Min-Mana Rating{x\n\r",ch);
        send_to_char("{W----------- ----- ---- --------- -------- ------{x\n\r",ch);
        for (class = 0;class < MAX_CLASS;class++) {
        if (skill_table[skill].skill_level[class] > 200)
            continue;
        printf_to_char(ch,"{G%-11s {g%5d %4d %9d %8d %6d\n\r",
        class_table[class].name,
        skill_table[skill].skill_level[class],
        skill_table[skill].rating[class],
        skill_table[skill].beats,
        skill_table[skill].min_mana,
        skill_table[skill].rating[class]);
        }
        return;
    }
}


void do_newscore (CHAR_DATA * ch, char *argument)
{
    char buf[MAX_STRING_LENGTH];
    int hitroll;
    int damroll;
    int align;
    char cposition[100];
    char calignment[100];
//    int exptolevel;

    if (ch->level <= 9)
    {
        align = 0;
        strcpy(calignment, "NULL");
    }
    else
    {
        align = ch->alignment;
        if (ch->alignment > 900)
            strcpy(calignment, "saintly");
        else if (ch->alignment > 700)
            strcpy(calignment, "very good");
        else if (ch->alignment > 350)
            strcpy(calignment, "good");
        else if (ch->alignment > 100)
            strcpy(calignment, "neutral good");
        else if (ch->alignment > -100)
            strcpy(calignment, "neutral bad");
        else if (ch->alignment > -350)
            strcpy(calignment, "bad");
        else if (ch->alignment > -700)
            strcpy(calignment, "evil");
        else if (ch->alignment > -900)
            strcpy(calignment, "chaotic");
        else
            strcpy(calignment, "satanic");
    }

    switch (ch->position)
    {
        case POS_DEAD:
            strcpy(cposition, "You are DEAD");
            break;
        case POS_MORTAL:
            strcpy(cposition, "You are Mortally Wounded");
            break;
        case POS_INCAP:
            strcpy(cposition, "You are Incapacitated");
            break;
        case POS_STUNNED:
            strcpy(cposition, "You are Stunned");
            break;
        case POS_SLEEPING:
            strcpy(cposition, "You are Sleeping");
            break;
        case POS_RESTING:
            strcpy(cposition, "You are Resting");
            break;
        case POS_SITTING:
            strcpy(cposition, "You are Sitting");
            break;
        case POS_STANDING:
            strcpy(cposition, "You are Standing");
            break;
        case POS_FIGHTING:
            strcpy(cposition, "You are Fighting");
            break;
    }

    if (ch->level >= 15)
    {
        hitroll = GET_HITROLL(ch);
        damroll = GET_DAMROLL(ch);
    }
    else
    {
        hitroll = 0;
        damroll = 0;
    }

    send_to_char ("    {G+{g------------------------------------------------------{G+{x\n\r", ch);

    sprintf (buf, "    {g|{C Scoresheet %41s {g|{x\n\r", ch->name);
    send_to_char(buf, ch);

    send_to_char ("    {G+{g------------------------{G+{g-----------------------------{G+{x\n\r", ch);

    sprintf (buf, "    {g|{c  Race:{C %-15s {g|{c Health:{C %4d {c/{C %-12d {g|{x\r\n",
	          race_table[ch->race].name,
                  ch->hit, ch->max_hit);
    send_to_char(buf, ch);

    sprintf (buf, "    {g|{c Class:{C %-15s {g|{c   Mana:{C %4d {c/{C %-12d {g|{x\n\r",
                  IS_NPC(ch) ? "mobile" : class_table[ch->class].name,
                  ch->mana, ch->max_mana);
    send_to_char(buf, ch);

    sprintf (buf, "    {g|{c   Sex:{C %-15s {g|{c   Move:{C %4d {c/{C %-12d {g|{x\n\r",
                  ch->sex == 0 ? "Sexless" : ch->sex == 1 ? "Male" : "Female",
                  ch->move, ch->max_move);
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c Level: {C%-11d {G+{g---{G+{g--------{G+{g--------------{G+     {g|{x\n\r",
                 ch->level);
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c   Age:{C %-11d {g|{c Str:{C %2d{c/{C%2d {g|{c Prce:{C %-6d {g|     |{x\n\r",
                 get_age(ch), get_curr_stat(ch, STAT_STR), ch->perm_stat[STAT_STR],
                 GET_AC(ch, AC_PIERCE));
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c   Exp:{C %-11d {g|{c Int:{C %2d{c/{C%2d {g| {cBash:{C %-6d {G+{g-----{G+{x\n\r",
                 ch->exp, get_curr_stat(ch, STAT_INT), ch->perm_stat[STAT_INT],
                 GET_AC(ch, AC_BASH));
    send_to_char(buf, ch);

    sprintf(buf, "    {G+{g--------------------{G+ {cWis:{C %2d{c/{C%2d {g|{c Slsh:{C %-6d {g|{x\n\r",
                 get_curr_stat(ch, STAT_WIS), ch->perm_stat[STAT_WIS],
                 GET_AC(ch, AC_SLASH));
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c Hitroll:{C %-9d {g|{c Dex:{C %2d{c/{C%2d {g|{c Magc:{C %-6d {g|{x\n\r",
                 GET_HITROLL(ch), get_curr_stat(ch, STAT_DEX), ch->perm_stat[STAT_DEX],
                 GET_AC(ch, AC_EXOTIC));
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c Damroll:{C %-9d {g|{c Con:{C %2d{c/{C%2d {g|              |{x\n\r",
                 GET_DAMROLL(ch), get_curr_stat(ch, STAT_CON), ch->perm_stat[STAT_CON]);
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c    Gold:{C %-9ld {G+{g------------{G+{g--------------{G+{x\n\r", ch->gold);
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c  Silver:{C %-9ld {g|{C %-25s {g|{x\n\r",
                 ch->silver, cposition);
    send_to_char(buf, ch);

    send_to_char("    {G+{g--------------------{G+{g--{G+{g------------------------{G+{x\n\r", ch);

    sprintf(buf, "    {g|{c Alignment:{C %-10d {g|{c  Items:{C %4d {c/{C %-7d {g|{x\n\r",
                 align, ch->carry_number, can_carry_n(ch));
    send_to_char(buf, ch);

    sprintf(buf, "    {g|{c You are{C %-13s {g|{c Weight:{C %4d {c/{C %-7d {g|{x\n\r",
                 calignment, get_carry_weight(ch) / 10, can_carry_w(ch) / 10);
    send_to_char(buf, ch);

    send_to_char("    {G+{g-----------------------{G+{g------------------------{G+{x\n\r", ch);

    sprintf(buf, "    {g|{c Wimpy:{C %-39d {g|{x\n\r",
                 ch->wimpy);
    send_to_char(buf, ch);

    send_to_char("    {G+{g------------------------------------------------{G+{x\n\r", ch);

    sprintf(buf, "    {g|{c Bank Gold:{C %-35ld {g|{x\n\r",ch->pcdata->gold_bank);
    send_to_char(buf, ch);
    sprintf(buf, "    {g|{c Bank Silver: {C %-32ld {g|{x\n\r",ch->pcdata->silver_bank);
    send_to_char(buf, ch);
    send_to_char("    {G+{g------------------------------------------------{G+{x\n\r", ch);
    
    if (ch->level < 200){
    sprintf(buf, "    {g|{c Exp to Level: {C %d/%d/%d  {g|{x\n\r",
			8000 - ch->exp, 64000 - ch->exp, 124000 - ch->exp);
    send_to_char(buf, ch);}


        if (ch->level == 200) {
        send_to_char("    {g| {cExp for Veteran: {C100000 {g|\n\r", ch);}
        if (ch->level == 201) {
        send_to_char("    {g| {cExp for Champion: {C200000 {g|\n\r", ch);}
        if (ch->level == 202) {
        send_to_char("    {g| {cExp for Legend: {C300000 {g|\n\r", ch);}
        if (ch->level == 203) {
        send_to_char("    {g| {cExp for Chosen: {C400000 {g|\n\r", ch);}
        if (ch->level == 204) {
        send_to_char("    {g| {cExp for Master: {C500000 {g|\n\r", ch);}
        if (ch->level == 205) {
        send_to_char("    {g| {cExp for Ancient: {C600000 {g|\n\r", ch);}


//    if (ch->level >= 100 && ch->level <= 105){
//    sprintf(buf, "   {g|{c Exp needed for next Level: {C%d{x\n\r", exptolevel - ch->exp);
//    send_to_char(buf, ch);}
 

//	((ch->level + 1) * exp_per_level (ch, ch->pcdata->points) - ch->exp));
//    send_to_char(buf, ch);
    send_to_char("    {G+{g------------------------------------------------{G+{x\n\r", ch);




    send_to_char("\n\r", ch);

    if (IS_SET(ch->comm, COMM_SHOW_AFFECTS))
        do_function(ch, &do_affects, "");

}

/* for stances */
extern char* stance_name[];

// CH_CMD ( do_sstat )
void do_sstat(CHAR_DATA *ch, char *argument)
{
char buf[MSL];
int stance;

send_to_char(
"            {dBasic Stances{x\n\r",ch);
send_to_char(
"{c+--------------------------------------+{x\n\r",ch);
sprintf( buf,
"{rViper{x:     {D%d{x\n\r{rCrane{x:     {D%d{x\n\r{rCrab{x:      {D%d{x\n\r{rMongoose{x:  {D%d{x\n\r{rBull{x:      {D%d{x\n\r",
ch->stance[1],ch->stance[2],ch->stance[3],ch->stance[4],ch->stance[5]);
send_to_char(buf,ch);
send_to_char( "\n\r          {dAdvanced Stances{x\n\r",ch);
send_to_char( "{c+--------------------------------------+{x\n\r",ch);
sprintf( buf,
"{rMantis{x:    {D%d{x\n\r{rDragon{x:    {D%d{x\n\r{rTiger{x:     {D%d{x\n\r{rMonkey{x:    {D%d{x\n\r{rSwallow{x:   {D%d{x\n\r",
ch->stance[6],ch->stance[7],ch->stance[8],ch->stance[9],ch->stance[10]);
send_to_char(buf,ch);
send_to_char( "{c+--------------------------------------+{x\n\r",ch);

stance = ch->stance[0];
if (stance >=1 && stance <= 10)
{
	sprintf(buf,"%s{x\n\r", stance_name[stance]);

send_to_char("{xCurrent stance:{! ",ch);
send_to_char(buf,ch);
}
else
{
send_to_char("{xCurrent stance:{! None{x\n\r",ch);
send_to_char("Stance command to pick a stance\n\r",ch);
}


return;
}





void do_directions (CHAR_DATA * ch, char *argument)
{

send_to_char("{W-={RDirections From MS{W=-{x\n\r",ch);
send_to_char("[All] Ofcol 3w4n2e7n6e4n{x\n\r",ch);
send_to_char("[1-5] Dwarven Day Care 6e3n2e1s{x\n\r",ch);
send_to_char("[1-20] Plains of the North 4e3n2w1n{x\n\r",ch);
send_to_char("[1-35] New Thalos 15e{x\n\r",ch);
send_to_char("[5-10] Haon Dor 5w{x\n\r",ch);
send_to_char("[5-10] Graveyard 3e7s1w1s{x\n\r",ch);
send_to_char("[5-20] Arachnos 13w1s2w1n1u1w1n{x\n\r",ch);
send_to_char("[5-30] Wyvern's Tower 6e4s2e1s2e1d2e{x\n\r",ch);
send_to_char("[5-35] The Shire 5w4n{x\n\r",ch);
send_to_char("[5-50] Olympus 3w4n2e8n2u\n\r",ch);
send_to_char("[5-50] Tower of Sorcery 9e1n{x\n\r",ch);
send_to_char("[20-90] Amber Palace 13w1s2w2n{x\n\r",ch);
send_to_char("[30-51] Valar Cathedral 24e3n2e{x\n\r",ch);
send_to_char("[50-60] Drow Cavern 9e1d{x\n\r",ch);
send_to_char("[55-99] Chessboard 1s1u{x\n\r",ch);
send_to_char("[60-80] Kender Village 10w1n{x\n\r",ch);
send_to_char("[80-110] Goblin Hole 8w2n{x\n\r",ch);
send_to_char("[100-130] Fey-Born Tower 13w1d{x\n\r",ch);
send_to_char("[120-150] Midgaard Prison 3e6n{x\n\r",ch);
send_to_char("[120-175] Hobgoblin Keep 13w7n{x\n\r",ch);
send_to_char("[150-175] Gangland 6s1e1s2e1s2e{x\n\r",ch);
send_to_char("[175-200] Elemental Canyon 6e4s2e1s2e1d1s4u1n{x\n\r",ch);
send_to_char("[175-200] Drakyri Isle 8s1e2s2e1s1w1s1e3s1w7s2e2s2e{x\n\r",ch);
send_to_char("[200-ANC] Daggermoon Keep 9e2n1d2n2e1u{x\n\r",ch);
send_to_char("[200-ANC] Liches Fortress 10w3n1e1n1e2n1e{x\n\r",ch);
send_to_char("[200-ANC] The Temple of Baah 10w3n1e1n1e2n1e2n2e1n\n\r",ch);
send_to_char("[200-ANC] Chaotic Dwellings 10w3n4w2n\n\r",ch);
send_to_char("[200-ANC] Forest Castle 5w4n2w6n\n\r",ch);
return;

}


void do_focus(CHAR_DATA *ch, char *argument)
{
 char buf[MSL];

 /*if(ch->level < LEVEL_HERO)
 {
  send_to_char("You just aren't legendary enough to focus.\n\r",ch);
  return;
 }
*/
 //else
	if (!IS_NPC(ch))
 {
 
send_to_char("\n\r{b-----------======================{x{cFOCUS{x{b======================-----------{x\n\r",ch);
 send_to_char("{b|>{x                   {RLvl  Totl Pnts  Pnts Left  Modifier1  Modifier2 {b<|{x\n\r", ch);
 send_to_char("{b|>{x                   {r---  ---------  ---------  ---------  --------- {b<|{x\n\r", ch);
 sprintf(buf,"{b|>{x {gCombat Power{x     : {r%-2d  %-9ld  %-9ld  Dam: %4d  Str: %4d {b<|{x\n\r",
	focus_level(ch->pcdata->focus[COMBAT_POWER]),
	ch->pcdata->focus[COMBAT_POWER],
	focus_left(ch->pcdata->focus[COMBAT_POWER]),
	focus_dam(ch), focus_str(ch) );
 send_to_char(buf,ch);
 sprintf(buf,"{b|>{x {gCombat Defense{x   : {r%-2d  %-9ld  %-9ld  AC: %5d  Mv: %5d {b<|{x\n\r",
	focus_level(ch->pcdata->focus[COMBAT_DEFENSE]),
	ch->pcdata->focus[COMBAT_DEFENSE],
	focus_left(ch->pcdata->focus[COMBAT_DEFENSE]),
        focus_ac(ch), 
focus_move(ch)*focus_level(ch->pcdata->focus[COMBAT_DEFENSE]) );
 send_to_char(buf,ch);
 sprintf(buf,"{b|>{x {gCombat Agility{x   : {r%-2d  %-9ld  %-9ld  Hit: %4d  Dex: %4d {b<|{x\n\r",
	focus_level(ch->pcdata->focus[COMBAT_AGILITY]),
	ch->pcdata->focus[COMBAT_AGILITY],
	focus_left(ch->pcdata->focus[COMBAT_AGILITY]),
	focus_hit(ch), focus_dex(ch) );
 send_to_char(buf,ch);
 sprintf(buf,"{b|>{x {gCombat Toughness{x : {r%-2d  %-9ld  %-9ld  Hp: %5d  Con: %4d {b<|{x\n\r",
	focus_level(ch->pcdata->focus[COMBAT_TOUGHNESS]),
	ch->pcdata->focus[COMBAT_TOUGHNESS],
	focus_left(ch->pcdata->focus[COMBAT_TOUGHNESS]),
        focus_hp(ch)*focus_level(ch->pcdata->focus[COMBAT_TOUGHNESS]), 
focus_con(ch) );
 send_to_char(buf,ch);
 sprintf(buf,"{b|>{x {gMagic Power{x      : {r%-2d  %-9ld  %-9ld  Sor: %4d  Max: +%3d%%{b<|{x\n\r",
	focus_level(ch->pcdata->focus[MAGIC_POWER]),
	ch->pcdata->focus[MAGIC_POWER],
	focus_left(ch->pcdata->focus[MAGIC_POWER]),
	focus_sorc(ch),focus_sorcbonus(ch) );
 send_to_char(buf,ch);
 sprintf(buf,"{b|>{x {gMagic Ability{x    : {r%-2d  %-9ld  %-9ld  Ma: %5d  Int: %4d {b<|{x\n\r",
	focus_level(ch->pcdata->focus[MAGIC_ABILITY]),
	ch->pcdata->focus[MAGIC_ABILITY],
	focus_left(ch->pcdata->focus[MAGIC_ABILITY]),
        focus_mana(ch)*focus_level(ch->pcdata->focus[MAGIC_ABILITY]), focus_int(ch) );
 send_to_char(buf,ch);
 sprintf(buf,"{b|>{x {gMagic Defense{x    : {r%-2d  %-9ld  %-9ld  Svs: %4d  Wis: %4d {b<|{x\n\r",
	focus_level(ch->pcdata->focus[MAGIC_DEFENSE]),
	ch->pcdata->focus[MAGIC_DEFENSE],
	focus_left(ch->pcdata->focus[MAGIC_DEFENSE]),
	focus_save(ch), focus_wis(ch) );
 send_to_char(buf,ch);
 
send_to_char("{b-----------===================={x{c********{x{b=====================-----------{x\n\r",ch);
 
 if (ch->pcdata->focus[CURRENT_FOCUS] == COMBAT_POWER)
	send_to_char("You current focus is Combat Power.\n\r",ch);
 else if (ch->pcdata->focus[CURRENT_FOCUS] == COMBAT_DEFENSE)
	send_to_char("You current focus is Combat Defense.\n\r",ch);
 else if (ch->pcdata->focus[CURRENT_FOCUS] == COMBAT_AGILITY)
	send_to_char("You current focus is Combat Agility.\n\r",ch);
 else if (ch->pcdata->focus[CURRENT_FOCUS] == COMBAT_TOUGHNESS)
	send_to_char("You current focus is Combat Toughness.\n\r",ch);
 else if (ch->pcdata->focus[CURRENT_FOCUS] == MAGIC_POWER)
	send_to_char("You current focus is Magic Power.\n\r",ch);
 else if (ch->pcdata->focus[CURRENT_FOCUS] == MAGIC_ABILITY)
	send_to_char("You current focus is Magic Ability.\n\r",ch);
 else if (ch->pcdata->focus[CURRENT_FOCUS] == MAGIC_DEFENSE)
	send_to_char("You current focus is Magic Defense.\n\r",ch);

 }
 return;
}