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