/***************************************************
* *
* Coded by Xkilla *
* *
* *
* *
* *
* *
* *
* *
* *
****************************************************/
#include "include.h"
void do_rand_typo args( ( CHAR_DATA *ch ) );
#define MAX_QUOTES 5
/*Fixed Generation*/
void do_generation( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
int gen;
char arg1 [MAX_INPUT_LENGTH];
char arg2 [MAX_INPUT_LENGTH];
char buf [MIL];
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( IS_NPC(ch) ) return;
if ( arg1[0] == '\0' || arg2[0] == '\0' )
{
send_to_char( "Syntax: generation <char> <generation>.\n\r", ch );
send_to_char("Generation 1 is a Master <Class> and 2 is clan leader.\n\r", ch);
return;
}
if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
{
send_to_char( "That player is not here.\n\r", ch);
return;
}
gen = is_number( arg2 ) ? atoi( arg2 ) : -1;
if (gen <1 || gen >7)
{
send_to_char("Invalid Generation.\n\r",ch);
return;
}
else
{
victim->pcdata->stats[UNI_GEN] = gen;
sprintf(buf,"You are now generation %d.\n\r",gen);
send_to_char(buf,victim);
}
return;
}
/* Newclass Command */
void do_newclass( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg1 [MAX_INPUT_LENGTH];
char arg2 [MAX_INPUT_LENGTH];
int i;
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( IS_NPC(ch) ) return;
if ( arg1[0] == '\0' || arg2[0] == '\0' )
{
send_to_char( "Syntax: newclass <char> <class>.\n\r", ch );
send_to_char(" New Classes:\n\r", ch );
send_to_char("None, ", ch);
send_to_char("Alien, ", ch);
send_to_char("Ninja, ", ch);
send_to_char("Highlander, ", ch);
send_to_char("Drow ", ch);
return;
}
if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
{
send_to_char( "That player is not here.\n\r", ch);
return;
}
if ( !str_cmp( arg2, "none" ) )
{
victim->class = 0;
if (!IS_IMMORTAL(ch))
{
victim->trust = 0;
victim->level = 2;
}
send_to_char("You are classless now!\n\r", victim);
}
else if ( !str_cmp( arg2, "alien" ))
{
if (!IS_IMMORTAL(ch))
{
victim->trust = 0;
victim->level = 3;
}
victim->class = CLASS_ALIEN;
send_to_char("You are now a alien!\n\r", victim);
}
else if ( !str_cmp( arg2, "drow" ) )
{
if (!IS_IMMORTAL(ch))
{
victim->trust = 0;
victim->level = 3;
}
victim->class = CLASS_DROWNEW;
send_to_char("You are now a drow!\n\r", victim);
}
else if ( !str_cmp( arg2, "highlander" ) )
{
if (!IS_IMMORTAL(ch))
{
victim->trust = 0;
victim->level = 3;
}
victim->class = CLASS_HIGHLANDER;
send_to_char("You are now a highlander!\n\r", victim);
}
else if ( !str_cmp( arg2, "ninja" ) )
{
if (!IS_IMMORTAL(ch))
{
victim->trust = 0;
victim->level = 3;
}
victim->class = CLASS_NINJA;
send_to_char("You are now a ninja!\n\r", victim);
}
else
{
send_to_char( "Syntax: newclass <char> <class>.\n\r", ch );
send_to_char(" New Classes:\n\r", ch );
send_to_char("None, ", ch);
send_to_char("Alien, ", ch);
send_to_char("Ninja, ", ch);
send_to_char("Highlander, ", ch);
send_to_char("Drow", ch);
return;
}
send_to_char("Class Set.\n\r",ch);
return;
}
/* Snippet by Xkilla */
/* New Score */
/* Important things to remember
*
*65 characters
*coded by Xkilla
*/
void do_newscore( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
char xkilla1[MAX_STRING_LENGTH];
char xkilla2[MAX_STRING_LENGTH];
int a_c = char_ac(ch);
if ( IS_NPC(ch) ) return;
send_to_char("#6_________________________________________________________________#n\n\r \n\r", ch);
sprintf( buf, "#1Your name is %s , #2and you are trusted at level %d. #n", ch->name, get_trust( ch ) );
send_to_char( buf, ch );
send_to_char("\n\r#6-----------------------------------------------------------------#n\n\r \n\r", ch);
sprintf( buf,
"#4%d/%d hp#2 %d/%d mana#3 %d/%d movement#7 %d primal#n\n\r",
ch->hit, ch->max_hit,
ch->mana, ch->max_mana,
ch->move, ch->max_move,
ch->practice );
send_to_char( buf, ch );
send_to_char("#6_________________________________________________________________#n\n\r \n\r", ch);
sprintf( buf,
"#0Str: %d Int: %d Wis: %d Dex: %d Con: %d.#n\n\r",
get_curr_str(ch),
get_curr_int(ch),
get_curr_wis(ch),
get_curr_dex(ch),
get_curr_con(ch) );
send_to_char( buf, ch );
if ( ch->level >= 0 )
{
sprintf( buf, "#2Alignment: %d. \n\r", ch->alignment );
send_to_char( buf, ch );
}
send_to_char("#6_________________________________________________________________#n\n\r \n\r", ch);
sprintf( buf, "#1Hitroll: %d. #2 Damroll: %d. #3 Damcap: %d. #4 Ac: %d.#n \n\r ",
char_hitroll(ch), char_damroll(ch), ch->damcap[0], a_c );
send_to_char( buf, ch );
send_to_char("#6_________________________________________________________________#n\n\r \n\r", ch);
if ( !IS_NPC(ch) )
{
if (ch->pkill == 0) sprintf(xkilla1,"0");
else if (ch->pkill == 1) sprintf(xkilla1,"%d",ch->pkill);
else sprintf(xkilla1,"%d",ch->pkill);
if (ch->pdeath == 0) sprintf(xkilla2,"0");
else if (ch->pdeath == 1) sprintf(xkilla2,"%d",ch->pdeath);
else sprintf(xkilla2,"%d",ch->pdeath);
sprintf( buf, "#2Pkills: %s Pdeaths: %s ", xkilla1, xkilla2);
send_to_char( buf, ch );
if (ch->mkill == 0) sprintf(xkilla1,"0");
else if (ch->mkill == 1) sprintf(xkilla1,"%d",ch->mkill);
else sprintf(xkilla1,"%d",ch->mkill);
if (ch->mdeath == 0) sprintf(xkilla2,"0");
else if (ch->mdeath == 1) sprintf(xkilla2,"%d",ch->mdeath);
else sprintf(xkilla2,"%d",ch->mdeath);
sprintf( buf, "#2Mkills: %s Mdeaths: %s\n\r", xkilla1,
xkilla2);
send_to_char( buf, ch );
}
if ( !IS_NPC(ch) && ch->level >= 0 )
{
sprintf( buf, "#1Status: %d Hours Total: %d #n\n\r ", ch->race,
(get_age(ch) - 17) * 2 );
send_to_char( buf, ch );
}
send_to_char("#6_________________________________________________________________#n\n\r \n\r", ch);
sprintf( buf, "#4Total Quest Points: %d Quests Completed: %d QPs: %d \n\rExp: %d#n \n\r",
ch->pcdata->score[SCORE_QUEST] , ch->pcdata->score[SCORE_NUM_QUEST] , ch->pcdata->quest, ch->exp);
send_to_char( buf, ch );
if (!IS_NPC(ch) && IS_CLASS(ch, CLASS_ALIEN)) {
sprintf( buf, "#2You have %d planet points!#n\n\r",
ch->pcdata->stats[ALIEN_PLANET] );
send_to_char( buf, ch ); }
else if (!IS_NPC(ch) && IS_CLASS(ch, CLASS_DROWNEW)) {
sprintf( buf, "#2Your drow skill is at %d!#n\n\r",
ch->xkilla->dskills );
send_to_char( buf, ch ); }
send_to_char("#6_________________________________________________________________#n\n\r \n\r", ch);
}
/*
void do_autostance(CHAR_DATA *ch, char *argument ) {
char arg [MAX_INPUT_LENGTH];
argument = one_argument(argument,arg);
if (IS_NPC(ch)) return;
if (!str_cmp(arg,"none")) {
send_to_char("You no longer autostance.\n\r", ch );
ch->pcdata->autostance = STANCE_NONE;}
else if (!str_cmp(arg, "crane")) {
send_to_char("You now autostance into the crane stance.\n\r",ch );
ch->pcdata->autostance = STANCE_CRANE;}
else if (!str_cmp(arg, "crab")) {
send_to_char("You now autostance into the crab stance.\n\r", ch );
ch->pcdata->autostance = STANCE_CRAB;}
else if (!str_cmp(arg, "bull")) {
send_to_char("You now autostance into the bull stance.\n\r", ch );
ch->pcdata->autostance = STANCE_BULL;}
else if (!str_cmp(arg, "viper")) {
send_to_char("You now autostance into the viper stance.\n\r", ch
);
ch->pcdata->autostance = STANCE_VIPER;}
else if (!str_cmp(arg, "mongoose")) {
send_to_char("You now autostance into the mongoose stance.\n\r",
ch);
ch->pcdata->autostance = STANCE_MONGOOSE;}
else if (!str_cmp(arg, "mantis")
&& ch->stance[STANCE_CRANE] >= 200
&& ch->stance[STANCE_VIPER] >= 200) {
send_to_char("You now autostance into the mantis stance.\n\r",
ch);
ch->pcdata->autostance = STANCE_MANTIS;}
else if (!str_cmp(arg, "monkey")
&& ch->stance[STANCE_CRANE] >= 200
&& ch->stance[STANCE_MONGOOSE] >= 200) {
send_to_char("You now autostance into the monkey stance.\n\r",
ch);
ch->pcdata->autostance = STANCE_MONKEY;}
else if (!str_cmp(arg, "swallow")
&& ch->stance[STANCE_CRAB] >= 200
&& ch->stance[STANCE_MONGOOSE] >= 200) {
send_to_char("You now autostance into the swallow stance.\n\r",
ch);
ch->pcdata->autostance = STANCE_SWALLOW;}
else if (!str_cmp(arg, "tiger")
&& ch->stance[STANCE_BULL] >= 200
&& ch->stance[STANCE_VIPER] >= 200) {
send_to_char("You now autostance into the tiger stance.\n\r", ch);
ch->pcdata->autostance = STANCE_TIGER;}
else if (!str_cmp(arg, "dragon")
&& ch->stance[STANCE_CRAB] >= 200
&& ch->stance[STANCE_BULL] >= 200) {
send_to_char("You now autostance into the dragon stance.\n\r",
ch);
ch->pcdata->autostance = STANCE_DRAGON;}
else send_to_char("You can't set your autostance to that!\n\r",ch);
}
void autodrop(CHAR_DATA *ch) {
int st;
char buf [MAX_INPUT_LENGTH];
char buf2 [MAX_INPUT_LENGTH];
char stancename [10];
if (IS_NPC(ch)) return;
st = ch->pcdata->autostance;
if (st == STANCE_VIPER) sprintf(stancename,"viper");
else if (st == STANCE_CRANE) sprintf(stancename,"crane");
else if (st == STANCE_CRAB) sprintf(stancename,"crab");
else if (st == STANCE_MONGOOSE) sprintf(stancename,"mongoose");
else if (st == STANCE_BULL) sprintf(stancename,"bull");
else if (st == STANCE_MANTIS) sprintf(stancename,"mantis");
else if (st == STANCE_DRAGON) sprintf(stancename,"dragon");
else if (st == STANCE_TIGER) sprintf(stancename,"tiger");
else if (st == STANCE_MONKEY) sprintf(stancename,"monkey");
else if (st == STANCE_SWALLOW) sprintf(stancename,"swallow");
else return;
if (ch->stance[0] < 1) {
ch->pcdata->autostance = st;
sprintf(buf, "You autodrop into the %s stance.", stancename);
act(buf, ch, NULL, NULL, TO_CHAR);
sprintf(buf2, "$n autodrops into the %s stance.", stancename);
act(buf2, ch, NULL, NULL, TO_ROOM);
}
}
*/
void do_level( CHAR_DATA *ch, char *argument )
{
char arg [MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
char skill [20];
one_argument( argument, arg );
if (IS_NPC(ch)) return;
send_to_char(
"#7------------------------------------------------------------------------------\n\r",ch);
send_to_char(
" #6 -= Skill =- \n\r",ch);
send_to_char(
"#7------------------------------------------------------------------------------\n\r",ch);
send_to_char(
" #6 Weapon\n\r",ch);
sprintf( buf,
"#1Unarm: %-3d Slice: %-3d Stab: %-3d Slash: %-3d Whip : %-3d Claw: %-3d Blast: %-3d\n\r",
ch->wpn[0],ch->wpn[1],ch->wpn[2],ch->wpn[3],ch->wpn[4],ch->wpn[5],ch->wpn[6]);
send_to_char(buf,ch);
sprintf( buf,
"#1Pound: %-3d Crush: %-3d Grep: %-3d Bite: %-3d Pierce: %-3d Suck: %-3d\n\r",
ch->wpn[7],ch->wpn[8],ch->wpn[9],ch->wpn[10],
ch->wpn[11],ch->wpn[12]);
send_to_char(buf,ch);
send_to_char(
"#7------------------------------------------------------------------------------\n\r",ch);
send_to_char(
" #6 Basic Stances\n\r",ch);
sprintf( buf,
"#0Viper : %-3d Crane: %-3d Crab : %-3d Mongoose: %-3d Bull: %-3d\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(
"#7------------------------------------------------------------------------------\n\r",ch);
send_to_char(
" #6 Advanced Stances\n\r",ch);
sprintf( buf,
"#2Mantis: %-3d Dragon: %-3d Tiger: %-3d Monkey: %-3d Swallow : %-3d\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(
"#7------------------------------------------------------------------------------\n\r",ch);
send_to_char(
" #6 Magic\n\r",ch);
sprintf( buf,
"#5Purple: %-3d #1Red: %-3d #4 Blue: %-3d #2 Green: %-3d #3Yellow: %-3d\n\r",ch->spl[0],
ch->spl[1],ch->spl[2],ch->spl[3],ch->spl[4]);
send_to_char(buf,ch);
send_to_char(
"#7------------------------------------------------------------------------------#n\n\r",ch);
if ( IS_SET(ch->special, SPC_PRINCE) )
send_to_char("#0You are a prince! #n \n\r", ch);
sprintf(skill, "#0Generation : %d #n \n\r", ch->pcdata->stats[UNI_GEN]);
send_to_char( skill, ch );
sprintf(skill, "#0Recall Room : %d #n \n\r",ch->home);
send_to_char( skill, ch );
if ( IS_CLASS(ch, CLASS_NINJA) )
send_to_char("#0You are a ninja! #n \n\r", ch);
else if ( IS_CLASS(ch, CLASS_DROWNEW) )
send_to_char("#0You are a drow! #n \n\r", ch);
else if ( IS_CLASS(ch, CLASS_DEMON) )
send_to_char("#0You are a demon! #n \n\r", ch);
else if ( IS_CLASS(ch, CLASS_MAGE) )
send_to_char("#0You are a mage! #n \n\r", ch);
else if ( IS_CLASS(ch, CLASS_WEREWOLF) )
send_to_char("#0You are a werewolf! #n \n\r", ch);
else if ( IS_CLASS(ch, CLASS_VAMPIRE) )
send_to_char("#0You are a vampire! #n \n\r", ch);
return;
}
void do_newbiepack( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
if (IS_SET(ch->newbits,NEWBIE_PACK))
{
send_to_char("Due to abuse you now may only create 1 newbie pack\n\r",ch);
return;
}
else if (ch->level >= 4)
{
send_to_char("You must be a mortal or avatar to create a newbie pack!\n\r",ch);
return;
}
else if (ch->level == 1)
{
ch->level = 7;
ch->trust = 7;
do_oload(ch,"3032");
do_oload(ch,"30333");
do_oload(ch,"30334");
do_oload(ch,"30335");
do_oload(ch,"30336");
do_oload(ch,"30337");
do_oload(ch,"30338");
do_oload(ch,"30339");
do_oload(ch,"30339");
do_oload(ch,"30340");
do_oload(ch,"30340");
do_oload(ch,"30341");
do_oload(ch,"30342");
do_oload(ch,"30342");
do_oload(ch,"30343");
do_oload(ch,"30343");
do_oload(ch,"30344");
do_oload(ch,"2622");
do_oload(ch,"2204");
ch->level = 1;
ch->trust = 0;
do_open(ch,"pack");
sprintf(buf,"all pack");
do_put(ch,buf);
send_to_char("You now have a newbie pack!\n\r", ch);
SET_BIT(ch->newbits,NEWBIE_PACK);
}
ch->level = 1;
ch->trust = 0;
return;
}
void do_afk( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
if ( IS_NPC(ch) )
return;
if (IS_SET(ch->extra, EXTRA_AFK))
{
free_string( ch->pcdata->title);
ch->pcdata->title = str_dup( ch->short_descr );
free_string( ch->short_descr );
ch->short_descr = NULL;
send_to_char( "You are no longer AFK.\n\r", ch );
sprintf(buf,"#i#1%s#n#2 is no longer #1A#2F#3K#4!#n",ch->name);
do_info(ch,buf);
REMOVE_BIT(ch->extra,EXTRA_AFK);
return;
}
else if (!IS_SET(ch->extra,EXTRA_AFK))
{
free_string( ch->short_descr );
ch->short_descr = str_dup( ch->pcdata->title );
free_string( ch->pcdata->title );
ch->pcdata->title = str_dup("#n(#1AFK#n)");
send_to_char( "You are now AFK.\n\r", ch );
sprintf(buf,"#i#1%s#n#2 is now #1A#2F#3K#4!#n",ch->name);
do_info(ch,buf);
SET_BIT(ch->extra,EXTRA_AFK);
WAIT_STATE(ch, 25);
return;
}
else
return;
}
struct quote_type
{
char * text; /* Declare the Quote table... */
char * author;
};
const struct quote_type quote_table [MAX_QUOTES] =
{
{ "Extraordinary Claims require Extraordinary evidence.", "Carl Sagan" }, /* Quote No 1 */
{ "Eagles may soar high and free, but tigers never get sucked into jet engines...",
"Anon" },
{ "The mud says,'Good bye.' in it's best AOL voice.", "#4Xkilla#n" },
{ "Bye!", "Xkilla" }, /* Thats 4 quotes! */
{ "My thy blade stay sharp and thy heart forever dark!", "#3KaVir#n" },
};
void do_rand_quote( CHAR_DATA *ch )
{
char buf[MAX_STRING_LENGTH];
int number;
number = number_range( 1, MAX_QUOTES) - 1;
sprintf ( buf, "\n\r#4%s\n\r - #1%s#n\n\r",
quote_table[number].text,
quote_table[number].author); /* NB Yellow quote, Red author */
send_to_char ( buf, ch );
return;
}
const char *typo_table [14] =
{
"Uhh, invalid command maybe!",
"What is that suppose to be!",
"What is your problem!",
"What ever you say!",
"#1Info#2->#4 You can't type!",
"You're very dumb aren't you!",
"What!!",
"AAAAGGGGGGGHHHHHHHHH!!!!!",
"Chance of that working next time is 2%",
"Chance of that working next time is 95%",
"Chance of that working next time is 0%",
"NOT EVEN #2XKILLA#4 WOULD TYPE THAT!!!!",
"NOT EVEN BELTAINE WOULD TYPE THAT!!!!",
"Master I don't think he can type master"
};
void do_rand_typo(CHAR_DATA *ch)
{
char buf[MAX_STRING_LENGTH];
int number;
number = number_range(1, 13);
sprintf(buf, "#1%s\n\r", typo_table[number]);
send_to_char(buf, ch);
return;
}
char * plr_bit_name( int arg )
{
static char buf[512];
buf[0] = '\0';
if ( arg & PLR_IS_NPC ) strcat( buf, " npc" );
if ( arg & PLR_AUTOEXIT ) strcat( buf, " autoexit" );
if ( arg & PLR_AUTOLOOT ) strcat( buf, " autoloot" );
if ( arg & PLR_AUTOSAC ) strcat( buf, " autosac" );
if ( arg & PLR_BLANK ) strcat( buf, " blank" );
if ( arg & PLR_BRIEF ) strcat( buf, " brief" );
if ( arg & PLR_COMBINE ) strcat( buf, " combine" );
if ( arg & PLR_PROMPT ) strcat( buf, " prompt" );
if ( arg & PLR_TELNET_GA ) strcat( buf, " telnet_ga" );
if ( arg & PLR_HOLYLIGHT ) strcat( buf, " holylight" );
if ( arg & PLR_WIZINVIS ) strcat( buf, " wizinvis" );
if ( arg & PLR_INCOG ) strcat( buf, " incog" );
if ( arg & PLR_SILENCE ) strcat( buf, " silenced" );
if ( arg & PLR_NO_TELL ) strcat( buf, " no_tell" );
if ( arg & PLR_LOG ) strcat( buf, " log" );
if ( arg & PLR_FREEZE ) strcat( buf, " freeze" );
if ( arg & PLR_GODLESS ) strcat( buf, " godless" );
return ( buf[0] != '\0' ) ? buf+1 : "none";
}
char * extra_plr_bit_name( int arg )
{
static char buf[512];
buf[0] = '\0';
if ( arg & EXTRA_TRUSTED ) strcat( buf, " q_trusted" );
if ( arg & EXTRA_NEWPASS ) strcat( buf, " newpass" );
if ( arg & EXTRA_OSWITCH ) strcat( buf, " oswitch" );
if ( arg & EXTRA_SWITCH ) strcat( buf, " switch" );
if ( arg & EXTRA_FAKE_CON ) strcat( buf, " fake_con" );
if ( arg & TIED_UP ) strcat( buf, " tied_up" );
if ( arg & GAGGED ) strcat( buf, " gagged" );
if ( arg & BLINDFOLDED ) strcat( buf, " blindfolded" );
if ( arg & EXTRA_DONE ) strcat( buf, " non_virgin" );
if ( arg & EXTRA_EXP ) strcat( buf, " got_exp" );
if ( arg & EXTRA_PREGNANT ) strcat( buf, " pregnant" );
if ( arg & EXTRA_LABOUR ) strcat( buf, " labour" );
if ( arg & EXTRA_BORN ) strcat( buf, " born" );
if ( arg & EXTRA_PROMPT ) strcat( buf, " prompt" );
if ( arg & EXTRA_MARRIED ) strcat( buf, " married" );
if ( arg & EXTRA_CALL_ALL ) strcat( buf, " call_all" );
return ( buf[0] != '\0' ) ? buf+1 : "none";
}
char * get_position_name( int arg )
{
switch( arg )
{
case 0: return "dead";
case 1: return "mortal";
case 2: return "incap";
case 3: return "stunned";
case 4: return "sleeping";
case 5: return "meditating";
case 6: return "sitting";
case 7: return "resting";
case 8: return "fighting";
case 9: return "standing";
}
bug( "Get_position_name: unknown type %d.", arg );
return "(unknown)";
}
/*
* Itemaffect bit names :)
*/
char * itemaffect_bit_name( int arg )
{
static char buf[512];
buf[0] = '\0';
if ( arg & ITEMA_SHOCKSHIELD ) strcat( buf, " Shockshield" );
if ( arg & ITEMA_FIRESHIELD ) strcat( buf, " Fireshield" );
if ( arg & ITEMA_ICESHIELD ) strcat( buf, " Iceshield" );
if ( arg & ITEMA_ACIDSHIELD ) strcat( buf, " Acidshield" );
if ( arg & ITEMA_DBPASS ) strcat( buf, " Pass Door" );
if ( arg & ITEMA_CHAOSSHIELD ) strcat( buf, " Chaoshield" );
if ( arg & ITEMA_ARTIFACT ) strcat( buf, " Artifact" );
if ( arg & ITEMA_MYSTIC ) strcat( buf, " Mystic" );
if ( arg & ITEMA_REGENERATE ) strcat( buf, " Regeneration" );
if ( arg & ITEMA_SPEED ) strcat( buf, " Speed" );
if ( arg & ITEMA_VORPAL ) strcat( buf, " Vorpal" );
if ( arg & ITEMA_PEACE ) strcat( buf, " Peace" );
if ( arg & ITEMA_RIGHT_SILVER ) strcat( buf, " Right Silver" );
if ( arg & ITEMA_LEFT_SILVER ) strcat( buf, " Left Silver" );
if ( arg & ITEMA_REFLECT ) strcat( buf, " Darkshield" );
if ( arg & ITEMA_RESISTANCE ) strcat( buf, " Resistance" );
if ( arg & ITEMA_VISION ) strcat( buf, " Vision" );
if ( arg & ITEMA_STALKER ) strcat( buf, " Stalker" );
if ( arg & ITEMA_VANISH ) strcat( buf, " Vanish" );
if ( arg & ITEMA_RAGER ) strcat( buf, " Rager" );
return ( buf[0] != '\0' ) ? buf+1 : "none";
}
void do_pstat ( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
CHAR_DATA *victim;
argument = one_argument( argument, arg );
if ( arg[0] == '\0' )
{
send_to_char("Pstat whom?\n\r", ch );
return;
}
if ( ( victim = get_char_world( ch, arg ) ) == NULL )
{
send_to_char("They aren't here.\n\r", ch );
return;
}
if ( !IS_NPC( victim ) && IS_SET( victim->act, PLR_GODLESS ) &&
get_trust( ch ) < NO_GODLESS )
{
send_to_char( "You failed.\n\r", ch );
return;
}
sprintf( buf, "Name : %s.\n\r",
IS_NPC( victim ) ? victim->short_descr : victim->name );
send_to_char( buf, ch );
sprintf( buf, "Sex : %s. Room : %d. Align : %d. Primal : %d. Quest : %d.\n\r",
victim->sex == SEX_MALE ? "Male" :
victim->sex == SEX_FEMALE ? "Female" : "None",
victim->in_room == NULL ? 0 : victim->in_room->vnum,
victim->alignment,
victim->practice,
IS_NPC( victim ) ? 0 : victim->pcdata->quest
);
send_to_char( buf, ch );
sprintf( buf, "Level : %d. Trust : %d. Gold : %d. Exp : %d.\n\r",
victim->level,
victim->trust,
victim->gold,
victim->exp );
send_to_char( buf, ch );
sprintf( buf, "Hit : %d. Dam : %d. AC : %d. Position : %s\n\r",
char_hitroll( victim ),
char_damroll( victim ),
char_ac( victim ),
capitalize( get_position_name( victim->position ) ));
send_to_char( buf, ch );
sprintf( buf, "HP %d/%d. Mana %d/%d. Move %d/%d.\n\r",
victim->hit, victim->max_hit,
victim->mana, victim->max_mana,
victim->move, victim->max_move );
send_to_char( buf, ch );
sprintf( buf, "Str: %d. Int: %d. Wis: %d. Dex: %d. Con: %d.\n\r",
get_curr_str(victim),
get_curr_int(victim),
get_curr_wis(victim),
get_curr_dex(victim),
get_curr_con(victim) );
send_to_char( buf, ch );
sprintf( buf, "Fighting : %s. (%d)\n\r",
victim->fighting ? victim->fighting->name : "(None)",
victim->fighting ? victim->fighting->level : 0 );
send_to_char( buf, ch );
sprintf( buf, "Pkill : %d. Pdeath : %d. Mkill : %d. Mdeath : %d.\n\r",
IS_NPC( victim ) ? 0 : victim->pkill,
IS_NPC( victim ) ? 0 : victim->pdeath,
IS_NPC( victim ) ? 0 : victim->mkill,
IS_NPC( victim ) ? 0 : victim->mdeath );
send_to_char( buf, ch );
sprintf( buf, "TotExp : %12d. TotMobLev : %10d. TotQuestPoints : %10d.\n\r",
IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_TOTAL_XP],
IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_TOTAL_LEVEL],
IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_QUEST] );
send_to_char( buf, ch );
sprintf( buf, "HighExp : %12d. HighMobLev : %10d. Tot#Quests : %10d.\n\r",
IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_HIGH_XP],
IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_HIGH_LEVEL],
IS_NPC( victim ) ? 0 : victim->pcdata->score[SCORE_NUM_QUEST] );
send_to_char( buf, ch );
if ( !IS_NPC( victim ) )
{
sprintf( buf, "Unarmed : %4d.", victim->wpn[0] );
send_to_char( buf, ch );
sprintf( buf, " Slice : %4d.", victim->wpn[1] );
send_to_char( buf, ch );
sprintf( buf, " Stab : %4d.", victim->wpn[2] );
send_to_char( buf, ch );
sprintf( buf, " Slash : %4d.", victim->wpn[3] );
send_to_char( buf, ch );
sprintf( buf, " Whip : %4d.\n\r", victim->wpn[4] );
send_to_char( buf, ch );
sprintf( buf, "Claw : %4d.", victim->wpn[5] );
send_to_char( buf, ch );
sprintf( buf, " Blast : %4d.", victim->wpn[6] );
send_to_char( buf, ch );
sprintf( buf, " Pound : %4d.", victim->wpn[7] );
send_to_char( buf, ch );
sprintf( buf, " Crush : %4d.", victim->wpn[8] );
send_to_char( buf, ch );
sprintf( buf, " Grep : %4d.\n\r", victim->wpn[9] );
send_to_char( buf, ch );
sprintf( buf, "Bite : %4d.", victim->wpn[10] );
send_to_char( buf, ch );
sprintf( buf, " Pierce : %4d.", victim->wpn[11] );
send_to_char( buf, ch );
sprintf( buf, " Suck : %4d.\n\r",victim->wpn[12] );
send_to_char( buf, ch );
sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d.\n\r",
"Purple", victim->spl[PURPLE_MAGIC],
"Red", victim->spl[RED_MAGIC],
"Blue", victim->spl[BLUE_MAGIC],
"Green", victim->spl[GREEN_MAGIC],
"Yellow", victim->spl[YELLOW_MAGIC] );
send_to_char( buf, ch );
sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %3d.\n\r",
"Viper", victim->stance[STANCE_VIPER],
"Crane", victim->stance[STANCE_CRANE],
"Crab", victim->stance[STANCE_CRAB],
"Mongoose", victim->stance[STANCE_MONGOOSE],
"Bull", victim->stance[STANCE_BULL] );
send_to_char( buf, ch );
sprintf( buf, "%-8s : %3d. %-8s : %3d. %-8s : %3d. %-8s : %-3d. %-8s : %3d.\n\r",
"Mantis", victim->stance[STANCE_MANTIS],
"Dragon", victim->stance[STANCE_DRAGON],
"Tiger", victim->stance[STANCE_TIGER],
"Monkey", victim->stance[STANCE_MONKEY],
"Swallow", victim->stance[STANCE_SWALLOW] );
send_to_char( buf, ch );
sprintf( buf, "Act : %s\n\r", plr_bit_name(victim->act ));
send_to_char( buf, ch );
sprintf( buf, "Extra : %s\n\r",
victim->extra <= 0 ? "(None)" : extra_plr_bit_name( victim->extra ) );
send_to_char( buf, ch );
sprintf( buf, "ItemAff : %s\n\r",
victim->itemaffect <= 0 ? "(None)" : itemaffect_bit_name(victim->itemaffect ) );
send_to_char( buf, ch );
sprintf( buf, "Affected by : %s.\n\r",
affect_bit_name( victim->affected_by ) );
send_to_char( buf, ch );
return;
}
}