/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
***************************************************************************/
/***************************************************************************
* God Wars Mud copyright (C) 1994, 1995, 1996 by Richard Woolcock *
* *
* Legend of Chrystancia copyright (C) 1999, 2000, 2001 by Matthew Little *
* This mud is NOT to be copied in whole or in part, or to be run without *
* the permission of Matthew Little. Nobody else has permission to *
* authorise the use of this code. *
***************************************************************************/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <assert.h>
#include <unistd.h>
#include <stdarg.h>
#include <limits.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include "merc.h"
void obj_score args ((CHAR_DATA * ch, OBJ_DATA * obj));
/* Nothing in here yet */
void do_newbieify (CHAR_DATA * ch, char *argument)
{
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char arg3[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
CHAR_DATA *victim;
int value;
sprintf (buf, "%s: Newbieify %s", ch->name, argument);
if (ch->level < NO_WATCH)
do_watching (ch, buf);
smash_tilde (argument);
argument = one_argument (argument, arg1);
argument = one_argument (argument, arg2);
argument = one_argument (argument, arg3);
value = is_number (arg3) ? atoi (arg3) : 0;
if (arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0')
{
send_to_char ("Syntax: newbieify <victim> <field> <value>\n\r", ch);
send_to_char ("\n\r", ch);
send_to_char ("Field being one of:\n\r", ch);
send_to_char ("Legend (Legend Status)\n\r", ch);
send_to_char ("Quickening (quickening level)\n\r",ch);
send_to_char ("QP (Earned Quest Points)\n\r", ch);
send_to_char ("EEXP (Earned Experience Points)\n\r", ch);
send_to_char ("Exp (Experience points in hand)\n\r", ch);
send_to_char ("Value being 0-9 (Legend only)\n\r", ch);
send_to_char ("Or 0 - whatever (QP / Exp)\n\r", ch);
return;
}
if ((victim = get_char_world (ch, arg1)) == NULL)
{
send_to_char ("They aren't here.\n\r", ch);
return;
}
if (IS_SET (victim->act, PLR_GODLESS) && ch->level < NO_GODLESS)
{
send_to_char ("You failed.\n\r", ch);
return;
}
if ( !str_cmp( arg2, "quickening" ) )
{
if ( IS_NPC(victim) )
{
send_to_char( "Not on NPC's.\n\r", ch );
return;
}
if ( value < 0 || value > 1000 )
{
send_to_char( "Range is 0 to 1000.\n\r", ch );
return;
}
if (IS_HIGHJUDGE(ch))
{
victim->quickening[1] = value;
send_to_char("Quickening set.\n\r",ch);}
else
send_to_char( "Sorry, no can do...\n\r", ch );
return;
}
if (!str_cmp (arg2, "legend"))
{
if (IS_NPC (victim))
{
send_to_char ("Not on NPC's.\n\r", ch);
return;
}
if (value < 0 || value > 10)
{
send_to_char ("Legend Status range is 0 to 10.\n\r", ch);
return;
}
if (IS_HIGHJUDGE (ch))
{
victim->lstatus = value;
send_to_char ("Legend status set.\n\r", ch);
}
else
send_to_char ("Sorry, no can do...\n\r", ch);
return;
}
if (!str_cmp (arg2, "qp"))
{
if (IS_NPC (victim))
{
send_to_char ("Not on NPC's.\n\r", ch);
return;
}
if (value < 0 || value > 3000000)
{
send_to_char ("Quest range is 0 to 3000000.\n\r", ch);
return;
}
if (IS_HIGHJUDGE (ch))
{
victim->pcdata->score[SCORE_QUEST] = value;
send_to_char ("Earned Quest Point value set.\n\r", ch);
}
else
send_to_char ("Sorry, no can do...\n\r", ch);
return;
}
if (!str_cmp (arg2, "exp"))
{
if (IS_NPC (victim))
{
send_to_char ("Not on NPC's.\n\r", ch);
return;
}
if (value < 0 || value > 1000000000)
{
send_to_char ("Exp range is 0 to 1000000000.\n\r", ch);
return;
}
if (IS_HIGHJUDGE (ch))
{
victim->exp = value;
send_to_char ("Experience set.\n\r", ch);
}
else
send_to_char ("Sorry, no can do...\n\r", ch);
return;
}
if (!str_cmp (arg2, "eexp"))
{
if (IS_NPC (victim))
{
send_to_char ("Not on NPC's.\n\r", ch);
return;
}
if (value < 0)
{
send_to_char ("Exp range is 0 to 1000000000.\n\r", ch);
return;
}
if (IS_HIGHJUDGE (ch))
{
victim->pcdata->score[SCORE_TOTAL_XP] = value;
send_to_char ("Earned Experience set.\n\r", ch);
}
else
send_to_char ("Sorry, no can do...\n\r", ch);
return;
}
}
void do_uniscore (CHAR_DATA * ch, char *argument)
{
int outcast = 0;
int online = 0;
int total = 0;
int a_c = char_ac (ch);
float chtier;
float chtierexp;
int percent;
int nexttier;
char buf[MAX_STRING_LENGTH];
char hit_str[MAX_INPUT_LENGTH];
char mana_str[MAX_INPUT_LENGTH];
char move_str[MAX_INPUT_LENGTH];
char mhit_str[MAX_INPUT_LENGTH];
char mmana_str[MAX_INPUT_LENGTH];
char mmove_str[MAX_INPUT_LENGTH];
char exp_str[MAX_INPUT_LENGTH];
int days;
int hours;
int minutes;
int seconds;
online = (int) (current_time - ch->logon);
total = ch->played + online;
sprintf (hit_str, "%d", ch->hit);
COL_SCALE (hit_str, ch, ch->hit, ch->max_hit);
sprintf (mana_str, "%d", ch->mana);
COL_SCALE (mana_str, ch, ch->mana, ch->max_mana);
sprintf (move_str, "%d", ch->move);
COL_SCALE (move_str, ch, ch->move, ch->max_move);
sprintf (exp_str, "%lli", ch->exp);
COL_SCALE (exp_str, ch, ch->exp, 1000);
sprintf (mhit_str, "%d", ch->max_hit);
ADD_COLOUR (ch, mhit_str, L_CYAN);
sprintf (mmana_str, "%d", ch->max_mana);
ADD_COLOUR (ch, mmana_str, L_CYAN);
sprintf (mmove_str, "%d", ch->max_move);
ADD_COLOUR (ch, mmove_str, L_CYAN);
if (IS_NPC (ch))
return;
if (!IS_NPC (ch)
&& (IS_EXTRA (ch, EXTRA_OSWITCH) || IS_HEAD (ch, LOST_HEAD)))
{
obj_score (ch, ch->pcdata->chobj);
return;
}
loc_to_char (ch);
sprintf (buf, " #wName:#n %s%-15s#n.\n\r", ch->name,
IS_NPC (ch) ? "" : ch->pcdata->title);
send_to_char (buf, ch);
if (!IS_NPC (ch))
{
sprintf (buf, " #wCreated:#n %s\n\r", ch->createtime);
send_to_char (buf, ch);
}
if (!IS_NPC (ch))
birth_date (ch, TRUE);
if (!IS_NPC (ch) && IS_EXTRA (ch, EXTRA_PREGNANT))
birth_date (ch, FALSE);
days = (total / 86400);
hours = ((total / 3600) % 24);
minutes = ((total / 60) % 60);
seconds = (total % 60);
sprintf (buf,
" #wPlayed:#n %d day%s, %d hour%s, %d minute%s, and %d second%s\n\r",
days, days == 1 ? "" : "s", hours, hours == 1 ? "" : "s", minutes,
minutes == 1 ? "" : "s", seconds, seconds == 1 ? "" : "s");
send_to_char (buf, ch);
hours = ((online / 3600));
minutes = ((online / 60) % 60);
seconds = (online % 60);
sprintf (buf,
" #wThis Session:#n %d hour%s, %d minute%s, and %d second%s\n\r",
hours, hours == 1 ? "" : "s", minutes, minutes == 1 ? "" : "s",
seconds, seconds == 1 ? "" : "s");
send_to_char (buf, ch);
if (get_trust (ch) != ch->level)
{
divide7_to_char (ch);
sprintf (buf, " #wTrust:#n %d.\n\r", get_trust (ch));
send_to_char (buf, ch);
}
divide7_to_char (ch);
sprintf (buf,
" #wHP:#n %s/%s. #wMANA:#n %s/%s. #wMOVE:#n %s/%s. #wPrimal:#n %d.\n\r",
hit_str, mhit_str, mana_str, mmana_str, move_str, mmove_str,
ch->practice);
send_to_char (buf, ch);
sprintf (buf,
" #wCarrying:#n %d/%d items. #wCarried Weight:#n %d/%d kg.\n\r",
ch->carry_number, can_carry_n (ch), ch->carry_weight,
can_carry_w (ch));
send_to_char (buf, ch);
sprintf (buf,
" #wStr:#n %d (%d) #wInt: #n%d (%d) #wWis:#n %d (%d) #wDex:#n %d (%d) #wCon:#n %d (%d).\n\r",
get_curr_str (ch), ch->pcdata->perm_str, get_curr_int (ch),
ch->pcdata->perm_int, get_curr_wis (ch), ch->pcdata->perm_wis,
get_curr_dex (ch), ch->pcdata->perm_dex, get_curr_con (ch),
ch->pcdata->perm_con);
send_to_char (buf, ch);
divide7_to_char (ch);
sprintf (buf, " #wEXP:#n %lli. #wGold:#n %d. #wQuest Points: #n%d\n\r",
ch->exp, ch->gold, ch->pcdata->quest);
send_to_char (buf, ch);
sprintf (buf,
" #wAutoexit:#n [%s] #wAutoloot:#n [%s] #wAutosac:#n [%s] #wAutogold#n [%s] #wShields#n [%s]\n\r",
(!IS_NPC (ch) && IS_SET (ch->act, PLR_AUTOEXIT)) ? "X" : " ",
(!IS_NPC (ch) && IS_SET (ch->act, PLR_AUTOLOOT)) ? "X" : " ",
(!IS_NPC (ch)
&& IS_SET (ch->act, PLR_AUTOSAC)) ? "X" : " ", (!IS_NPC (ch)
&&
IS_SET (ch->more,
PLR_AUTOGOLD))
? "X" : " ", (!IS_NPC (ch)
&& IS_SET (ch->more, MORE_SHIELDS)) ? "X" : " ");
send_to_char (buf, ch);
sprintf (buf,
" #wNo Summon:#n[%s] #wNo Transport:#n[%s] #wNo Desc:#n [%s] #wAnsiColor:#n [%s] #wBackup#n [%s]\n\r",
!IS_SET (ch->immune, IMM_SUMMON) ? "X" : " ", !IS_SET (ch->immune,
IMM_TRANSPORT)
? "X" : " ", IS_SET (ch->more, MORE_NODESC) ? "X" : " ",
IS_SET (ch->act, PLR_ANSI) ? "X" : " ",
IS_SET (ch->act, PLR_AUTOBACKUP) ? "X" : " ");
stc (buf, ch);
divide7_to_char (ch);
sprintf (buf,
" #wMCCP:#n [%s] #wMXP:#n [%s] #wUsing MXP:#n [%s]\n\r",
ch->desc->out_compress ? "X" : " ", ch->desc->mxp ? "X" : " ",
USE_MXP (ch) ? "X" : " ");
stc (buf, ch);
if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_DRAGON))
{
divide7_to_char (ch);
sprintf (buf, "#w Dragon Points: #n %d.\n\r",
ch->pcdata->stats[DEMON_CURRENT]);
send_to_char (buf, ch);
}
if (!IS_NPC (ch)
&& (IS_CLASS (ch, CLASS_DEMON) || IS_SET (ch->special, SPC_CHAMPION)))
{
divide7_to_char (ch);
sprintf (buf,
" #wCurrent Demonic Power:#n %d. #wMax Demonic Power:#n %d.\n\r",
ch->pcdata->stats[DEMON_CURRENT],
ch->pcdata->stats[DEMON_TOTAL]);
send_to_char (buf, ch);
}
if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_DROW))
{
divide7_to_char (ch);
sprintf (buf, " #wDrow Points:#n %d.\n\r",
ch->pcdata->stats[DROW_POWER]);
send_to_char (buf, ch);
sprintf (buf, " #wMagic Resistance:#n %d.\n\r",
ch->pcdata->stats[DROW_MAGIC]);
send_to_char (buf, ch);
}
if (ch->level > 2)
{
divide7_to_char (ch);
sprintf (buf, " #w[Arena Stats] Wins: #n%d. #wLosses:#n %d.\n\r",
ch->awins, ch->alosses);
send_to_char (buf, ch);
if (ch->challenged != NULL)
{
if (IS_SET (ch->flag2, AFF2_CHALLENGED))
{
sprintf (buf, " #w[Arena]#n You have been challenged by %s.\n\r",
ch->challenged->name);
send_to_char (buf, ch);
}
if (IS_SET (ch->flag2, AFF2_CHALLENGER))
{
sprintf (buf, " #w[Arena]#n You have challenged %s.\n\r",
ch->challenged->name);
send_to_char (buf, ch);
}
}
if (ch->gladiator != NULL)
{
sprintf (buf, " #w[Arena Bet]#n You have a %d QP bet on %s\n\r",
ch->pcdata->plr_wager, ch->gladiator->name);
send_to_char (buf, ch);
}
}
if ((ch->pcdata->condition[COND_DRUNK] > 10
|| ch->pcdata->condition[COND_THIRST] == 0
|| ch->pcdata->condition[COND_FULL] == 0))
send_to_char (" #wCondition:#n", ch);
if (!IS_NPC (ch) && ch->pcdata->condition[COND_DRUNK] > 10)
send_to_char (" Drunk", ch);
if (!IS_NPC (ch) && ch->pcdata->condition[COND_THIRST] == 0)
send_to_char (" Thirsty", ch);
if (!IS_NPC (ch) && ch->pcdata->condition[COND_FULL] == 0)
send_to_char (" Hungry", ch);
sprintf (buf, " #wWimpy:#n %d.", ch->wimpy);
if (!IS_NPC (ch) && IS_EXTRA (ch, EXTRA_DONE))
strcat (buf, " Non-Virgin.\n\r");
else
strcat (buf, "\n\r");
send_to_char (buf, ch);
if (!IS_NPC (ch) && ch->pcdata->stage[0] >= 100)
send_to_char (" You are feeling extremely horny.\n\r", ch);
else if (!IS_NPC (ch) && ch->pcdata->stage[0] >= 50)
send_to_char (" You are feeling pretty randy.\n\r", ch);
else if (!IS_NPC (ch) && ch->pcdata->stage[0] >= 1)
send_to_char (" You are feeling rather kinky.\n\r", ch);
if (!IS_NPC (ch) && ch->pcdata->stage[1] > 0
&& ch->position == POS_STANDING)
{
send_to_char (" You are having sexual intercourse.\n\r", ch);
if (!IS_NPC (ch) && (ch->pcdata->stage[2] + 25) >= ch->pcdata->stage[1])
send_to_char (" You are on the verge of having an orgasm.\n\r", ch);
}
else
switch (ch->position)
{
case POS_DEAD:
send_to_char (" #wPosition:#n DEAD!!\n\r", ch);
break;
case POS_MORTAL:
send_to_char (" #wPosition:#n MORTALLY WOUNDED.\n\r", ch);
break;
case POS_INCAP:
send_to_char (" #wPosition:#n Incapacitated.\n\r", ch);
break;
case POS_STUNNED:
send_to_char (" #wPosition:#n Stunned.\n\r", ch);
break;
case POS_SLEEPING:
send_to_char (" #wPosition:#n Sleeping.\n\r", ch);
break;
case POS_RESTING:
send_to_char (" #wPosition:#n Resting.\n\r", ch);
break;
case POS_MEDITATING:
send_to_char (" #wPosition:#n Meditating.\n\r", ch);
break;
case POS_SITTING:
send_to_char (" #wPosition:#n Sitting.\n\r", ch);
break;
case POS_STANDING:
send_to_char (" #wPosition:#n Standing.\n\r", ch);
break;
case POS_FIGHTING:
send_to_char (" #wPosition:#n Fighting.\n\r", ch);
break;
send_to_char ("\n\r", ch);
}
divide7_to_char (ch);
if (ch->level >= 0)
{
sprintf (buf, " #wAC:#n %d ", a_c);
send_to_char (buf, ch);
}
send_to_char ("#w:#n ", ch);
if (a_c >= 101)
send_to_char ("Naked!\n\r", ch);
else if (a_c >= 80)
send_to_char ("Barely clothed.\n\r", ch);
else if (a_c >= 60)
send_to_char ("Wearing clothes.\n\r", ch);
else if (a_c >= 40)
send_to_char ("Slightly armored.\n\r", ch);
else if (a_c >= 20)
send_to_char ("Somewhat armored.\n\r", ch);
else if (a_c >= 0)
send_to_char ("Armored.\n\r", ch);
else if (a_c >= -50)
send_to_char ("Well armored.\n\r", ch);
else if (a_c >= -100)
send_to_char ("Strongly armored.\n\r", ch);
else if (a_c >= -250)
send_to_char ("Heavily armored.\n\r", ch);
else if (a_c >= -500)
send_to_char ("Superbly armored.\n\r", ch);
else if (a_c >= -749)
send_to_char ("Divinely armored.\n\r", ch);
else
send_to_char ("Ultimately armored!\n\r", ch);
divide7_to_char (ch);
sprintf (buf,
" #wHitroll:#n %d. #wDamroll:#n %d. #wDamcap:#n %d. #wSave vs Spell:#n %d.",
char_hitroll (ch), char_damroll (ch), ch->damcap[0],
ch->saving_throw);
send_to_char (buf, ch);
if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_VAMPIRE))
{
sprintf (buf, " #wBlood:#n %d.", ch->pcdata->condition[COND_THIRST]);
send_to_char (buf, ch);
sprintf (buf, " #wBeast:#n %d.\n\r ", ch->beast);
send_to_char (buf, ch);
if (ch->beast < 0)
send_to_char ("You are a cheat!\n\r", ch);
else if (ch->beast == 0)
send_to_char ("You have attained Golconda!\n\r", ch);
else if (ch->beast <= 5)
send_to_char ("You have almost reached Golconda!\n\r", ch);
else if (ch->beast <= 10)
send_to_char ("You are nearing Golconda!\n\r", ch);
else if (ch->beast <= 15)
send_to_char ("You have great control over your beast.\n\r", ch);
else if (ch->beast <= 20)
send_to_char
("Your beast has little influence over your actions.\n\r", ch);
else if (ch->beast <= 30)
send_to_char ("You are in control of your beast.\n\r", ch);
else if (ch->beast <= 40)
send_to_char ("You are able to hold back the beast.\n\r", ch);
else if (ch->beast <= 60)
send_to_char
("You are constantly struggling for control of your beast.\n\r",
ch);
else if (ch->beast <= 75)
send_to_char ("Your beast has great control over your actions.\n\r",
ch);
else if (ch->beast <= 90)
send_to_char ("The power of the beast overwhelms you.\n\r", ch);
else if (ch->beast <= 99)
send_to_char ("You have almost lost your battle with the beast!\n\r",
ch);
else
send_to_char ("The beast has taken over!\n\r", ch);
}
else if (!IS_CLASS (ch, CLASS_VAMPIRE))
send_to_char ("\n\r", ch);
if (ch->level >= 0)
{
divide7_to_char (ch);
sprintf (buf, " #wAlignment:#n %d ", ch->alignment);
send_to_char (buf, ch);
}
send_to_char ("#w:#n", ch);
if (ch->alignment > 900)
send_to_char ("Angelic.", ch);
else if (ch->alignment > 700)
send_to_char ("Saintly.", ch);
else if (ch->alignment > 350)
send_to_char ("Good.", ch);
else if (ch->alignment > 100)
send_to_char ("Kind.", ch);
else if (ch->alignment > -100)
send_to_char ("Neutral.", ch);
else if (ch->alignment > -350)
send_to_char ("Mean.", ch);
else if (ch->alignment > -700)
send_to_char ("Evil.", ch);
else if (ch->alignment > -900)
send_to_char ("Demonic.", ch);
else
send_to_char ("Satanic.", ch);
if (!IS_NPC (ch) && ch->level >= 0)
{
sprintf (buf, " #wStatus:#n %d. ", ch->race);
send_to_char (buf, ch);
}
if (!IS_NPC (ch))
send_to_char ("You are ", ch);
if (!IS_NPC (ch) && ch->level == 1)
send_to_char ("a Newbie.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 2)
send_to_char ("a Mortal.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 7)
send_to_char ("a Newbie Helper.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 8)
send_to_char ("a Builder.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 9)
send_to_char ("an Enforcer.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 10)
send_to_char ("a Judge.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 11)
send_to_char ("a High Judge.\n\r", ch);
else if (!IS_NPC (ch) && ch->level == 12)
send_to_char ("an Implementor.\n\r", ch);
else if (!str_cmp (ch->name, "Matthew"))
stc ("the Owner of the Mud.\n\r", ch);
else if (!str_cmp (ch->name, "Unique"))
stc ("the Player Relations immortal.\n\r", ch);
else if (!IS_NPC (ch) && ch->race <= 0)
send_to_char ("an Avatar.\n\r", ch);
else if (ch->race <= 4)
send_to_char ("a Peasant.\n\r", ch);
else if (ch->race <= 9)
send_to_char ("a Page.\n\r", ch);
else if (ch->race <= 14)
send_to_char ("a Apprentice.\n\r", ch);
else if (ch->race <= 19)
send_to_char ("a Scout.\n\r", ch);
else if (ch->race <= 24)
send_to_char ("a Soldier.\n\r", ch);
else if (ch->race <= 29)
send_to_char ("a Lieutenant.\n\r", ch);
else if (ch->race <= 34)
send_to_char ("a Captain.\n\r", ch);
else if (ch->race <= 39)
send_to_char ("a Major.\n\r", ch);
else if (ch->race <= 44)
send_to_char ("a General.\n\r", ch);
else if (ch->race <= 49)
send_to_char ("a Knight.\n\r", ch);
else if ((ch->race <= 54) && (ch->sex == SEX_FEMALE))
send_to_char ("a Lady.\n\r", ch);
else if ((ch->race <= 54) && (ch->sex == SEX_MALE))
send_to_char ("a Lord.\n\r", ch);
else if ((ch->race <= 59) && (ch->sex == SEX_FEMALE))
send_to_char ("a Baroness.\n\r", ch);
else if ((ch->race <= 59) && (ch->sex == SEX_MALE))
send_to_char ("a Baron.\n\r", ch);
else if ((ch->race <= 64) && (ch->sex == SEX_FEMALE))
stc ("a Viscountess.\n\r", ch);
else if ((ch->race <= 64) && (ch->sex == SEX_MALE))
stc ("a Viscount.\n\r", ch);
else if ((ch->race <= 69) && (ch->sex == SEX_FEMALE))
send_to_char ("a Countess.\n\r", ch);
else if ((ch->race <= 69) && (ch->sex == SEX_MALE))
send_to_char ("an Earl.\n\r", ch);
else if ((ch->race <= 74) && (ch->sex == SEX_FEMALE))
send_to_char ("a Duchess.\n\r", ch);
else if ((ch->race <= 74) && (ch->sex == SEX_MALE))
send_to_char ("a Duke.\n\r", ch);
else if ((ch->race <= 79) && (ch->sex == SEX_FEMALE))
send_to_char ("a Princess.\n\r", ch);
else if ((ch->race <= 79) && (ch->sex == SEX_MALE))
send_to_char ("a Prince.\n\r", ch);
else if ((ch->race >= 80) && (ch->sex == SEX_FEMALE))
send_to_char ("a Queen.\n\r", ch);
else if ((ch->race >= 80) && (ch->sex == SEX_MALE))
stc ("a King.\n\r", ch);
if (!IS_NPC (ch) && (get_hours (ch) < 6))
{
sprintf (buf, " #wYou receive Newbie Experience.\n\r");
stc (buf, ch);
}
else if (!IS_NPC (ch) && (get_hours (ch) < 10)
&& !IS_SET (ch->extra2, PKREADY))
{
sprintf (buf, " #wYou are safe from Player Killing.\n\r");
stc (buf, ch);
}
if (!IS_NPC (ch))
{
if (strlen (ch->pcdata->decapped) > 3)
{
sprintf (buf, " #wLast Decap: #n%s.\n\r", ch->pcdata->decapped);
stc (buf, ch);
}
if (strlen (ch->pcdata->decappedby) > 3)
{
sprintf (buf, " #wLast Decapped by:#n %s.\n\r",
ch->pcdata->decappedby);
stc (buf, ch);
}
}
if (!IS_NPC (ch) && ch->lstatus > 0)
{
sprintf (buf, " #wLegend Status:#n %d.\n\r", ch->lstatus);
send_to_char (buf, ch);
}
if (!IS_NPC (ch))
{
chtier = ch->tier;
chtierexp = ch->tierxp;
percent = (chtierexp / (chtier * 100000.00)) * 100.00;
nexttier = (ch->tier + 1);
sprintf (buf, " #wTier Level:#n %d.", ch->tier);
stc (buf, ch);
if (nexttier > 250)
nexttier = 250;
if (ch->tier < 250)
{
sprintf (buf, " %d%% of the way to be Tier %d. ", percent,
nexttier);
stc (buf, ch);
}
sprintf (buf, "#wTier Points:#n %d.\n\r", ch->tpoints);
stc (buf, ch);
}
if (ch->fight_timer > 0)
{
sprintf (buf, " #wFight Timer:#n %d seconds remaining.\n\r",
ch->fight_timer);
send_to_char (buf, ch);
}
stcprintf (ch, " #wPage Length: #n%d.\n\r", ch->pcdata->pagelen);
if (IS_SET (ch->more, MORE_NOKING))
{
outcast = (15 - ch->pcdata->outcast);
stcprintf (ch, " #wOutcast: #n%d more day(s).\n\r", outcast);
}
if (ch->class != 0 && ch->pcdata->gpoints > 0)
{
sprintf (buf, " #wGeneration Points: #n%d.\n\r", ch->pcdata->gpoints);
stc (buf, ch);
}
if (ch->paradox[1] > 0)
{
sprintf (buf, " #wParadox Points:#n %d.\n\r", ch->paradox[1]);
stc (buf, ch);
}
divide7_to_char (ch);
if (!IS_NPC (ch))
{
sprintf (buf, " #wMob Kills:#n %d. #wMob Deaths:#n %d.", ch->mkill,
ch->mdeath);
send_to_char (buf, ch);
sprintf (buf, " #wPlayer Kills:#n %d. #wPlayer Deaths:#n %d.\n\r",
ch->pkill, ch->pdeath);
send_to_char (buf, ch);
}
if (IS_IMMORTAL (ch))
{
divide7_to_char (ch);
sprintf (buf,
" #wWizinvis:#n [%s]. #wIncog:#n [%s]. #wWizinvis Level:#n [%d].\n\r",
(!IS_NPC (ch)
&& IS_SET (ch->act, PLR_WIZINVIS)) ? "X" : " ", (!IS_NPC (ch)
&&
IS_SET
(ch->act,
PLR_INCOG))
? "X" : " ", ch->pcdata->wizinvis);
send_to_char (buf, ch);
}
divide7_to_char (ch);
if (!IS_NPC (ch))
{
sprintf (buf,
"#w Quests Completed:#n %lli. #wEarned Questpoints: #n%lli.\n\r",
ch->pcdata->score[SCORE_NUM_QUEST],
ch->pcdata->score[SCORE_QUEST]);
stc (buf, ch);
}
{
if (IS_CLASS (ch, CLASS_WEREWOLF)
&& ch->pcdata->powers[WPOWER_SILVER] > 0)
{
sprintf (buf, " #wSilver Tolerance:#n %d. ",
ch->pcdata->powers[WPOWER_SILVER]);
send_to_char (buf, ch);
}
if (IS_CLASS (ch, CLASS_WEREWOLF))
{
sprintf (buf, " #wGnosis:#n %d/%d\n\r", ch->gnosis[GCURRENT],
ch->gnosis[GMAXIMUM]);
send_to_char (buf, ch);
}
if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_MONK))
{
divide7_to_char (ch);
sprintf (buf,
"#w Block counter:#n %d. #wCurrent Chi:#n %d. #wMaximum Chi:#n %d. \n\r",
ch->monkblock, ch->chi[CURRENT], ch->chi[MAXIMUM]);
stc (buf, ch);
}
if (IS_CLASS (ch, CLASS_DRAGON))
{
sprintf (buf,
" #wDragon Age: #nAffecting Hitroll and Damroll by +%d.\n\r",
GET_AGE(ch) * 20);
send_to_char (buf, ch);
}
if (IS_CLASS (ch, CLASS_NINJA))
{
sprintf (buf, " #wKI:#n %d/150.\n\r", ch->pcdata->powers[NINJAKI]);
stc (buf, ch);
}
if (IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->stats[UNI_RAGE] > 0)
{
sprintf (buf,
" #wBeasting:#n Affecting Hitroll and Damroll by +%d.\n\r",
ch->pcdata->stats[UNI_RAGE]);
send_to_char (buf, ch);
}
else if (IS_SET (ch->special, SPC_WOLFMAN)
&& ch->pcdata->stats[UNI_RAGE] > 0)
{
sprintf (buf,
" #wWolf Rage:#n Affecting Hitroll and Damroll by +%d.\n\r",
ch->pcdata->stats[UNI_RAGE]);
send_to_char (buf, ch);
}
else if (IS_CLASS (ch, CLASS_NINJA) && ch->pcdata->stats[UNI_RAGE] > 0)
{
sprintf (buf,
" #wMichi:#n Affecting Hitroll and Damroll by +%d.\n\r",
ch->pcdata->stats[UNI_RAGE]);
send_to_char (buf, ch);
}
else if (IS_CLASS (ch, CLASS_DEMON)
&& ch->pcdata->stats[DEMON_POWER] > 0)
{
int bonus =
(ch->pcdata->stats[DEMON_POWER] *
ch->pcdata->stats[DEMON_POWER] << 1);
sprintf (buf,
" #wDemonic EQ:#n Affects Hitroll and Damroll by +%d.\n\r",
bonus);
send_to_char (buf, ch);
}
}
divide7_to_char (ch);
return;
}