#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include "mud.h"
/*
* Locals
*/
void do_gold( CHAR_DATA * ch, char *argument )
{
set_char_color( AT_GOLD, ch );
ch_printf( ch, "You have %d credits.\r\n", ch->gold );
}
void do_score( CHAR_DATA * ch, char *argument )
{
if( IS_NPC( ch ) || !ch->pcdata )
do_oldscore( ch, STRLIT_EMPTY );
if( IS_AFFECTED( ch, AFF_POSSESS ) )
{
send_to_char( "You can't do that in your current state of mind!\r\n",
ch );
return;
}
ch_printf( ch, "&G%s\r\n", ch->pcdata->title );
ch_printf( ch,
"&W------------------------------------------------------------------------\r\n" );
ch_printf( ch, "&WName: &G%s &WAge: &G%d\r\n", ch->name, get_age( ch ) );
send_to_char( "&WStrength: &G", ch );
{
int score = get_curr_str( ch );
if( score >= 20 )
send_to_char( "immortal", ch );
else if( score > 17 )
send_to_char( "superior", ch );
else if( score > 15 )
send_to_char( "strong", ch );
else if( score > 12 )
send_to_char( "good", ch );
else if( score > 9 )
send_to_char( "average", ch );
else if( score > 7 )
send_to_char( "weak", ch );
else if( score > 5 )
send_to_char( "wimpy", ch );
else
send_to_char( "pathetic", ch );
}
send_to_char( "&W Constitution: &G", ch );
{
int score = get_curr_con( ch );
if( score >= 20 )
send_to_char( "immortal", ch );
else if( score > 17 )
send_to_char( "superior", ch );
else if( score > 15 )
send_to_char( "strong", ch );
else if( score > 12 )
send_to_char( "good", ch );
else if( score > 9 )
send_to_char( "average", ch );
else if( score > 7 )
send_to_char( "weak", ch );
else if( score > 5 )
send_to_char( "wimpy", ch );
else
send_to_char( "pathetic", ch );
}
send_to_char( "&W Dexterity: &G", ch );
{
int score = get_curr_dex( ch );
if( score >= 20 )
send_to_char( "immortal", ch );
else if( score > 17 )
send_to_char( "superior", ch );
else if( score > 15 )
send_to_char( "agile", ch );
else if( score > 12 )
send_to_char( "good", ch );
else if( score > 9 )
send_to_char( "average", ch );
else if( score > 7 )
send_to_char( "poor", ch );
else if( score > 5 )
send_to_char( "uncoordinated", ch );
else
send_to_char( "pathetic", ch );
}
send_to_char( "\r\n", ch );
send_to_char( "&WIntelligence: &G", ch );
{
int score = get_curr_int( ch );
if( score >= 20 )
send_to_char( "immortal", ch );
else if( score > 17 )
send_to_char( "superior", ch );
else if( score > 15 )
send_to_char( "bright", ch );
else if( score > 12 )
send_to_char( "good", ch );
else if( score > 9 )
send_to_char( "average", ch );
else if( score > 7 )
send_to_char( "dim", ch );
else if( score > 5 )
send_to_char( "stupid", ch );
else
send_to_char( "brainless", ch );
}
send_to_char( "&W Wisdom: &G", ch );
{
int score = get_curr_wis( ch );
if( score >= 20 )
send_to_char( "immortal", ch );
else if( score > 17 )
send_to_char( "superior", ch );
else if( score > 15 )
send_to_char( "wise", ch );
else if( score > 12 )
send_to_char( "good", ch );
else if( score > 9 )
send_to_char( "average", ch );
else if( score > 7 )
send_to_char( "poor", ch );
else if( score > 5 )
send_to_char( "unwise", ch );
else
send_to_char( "moron", ch );
}
send_to_char( "&W Charisma: &G ", ch );
{
int score = get_curr_cha( ch );
if( score >= 20 )
send_to_char( "immortal", ch );
else if( score > 17 )
send_to_char( "superior", ch );
else if( score > 15 )
send_to_char( "charming", ch );
else if( score > 12 )
send_to_char( "good", ch );
else if( score > 9 )
send_to_char( "average", ch );
else if( score > 7 )
send_to_char( "unlikeable", ch );
else if( score > 5 )
send_to_char( "rude", ch );
else
send_to_char( "go hide", ch );
}
send_to_char( "\r\n", ch );
ch_printf( ch,
"&W------------------------------------------------------------------------\r\n" );
send_to_char( "&WHealth &G ", ch );
if( ch->hit >= 100 )
send_to_char( "healthy", ch );
else if( ch->hit > 90 )
send_to_char( "slightly wounded", ch );
else if( ch->hit > 75 )
send_to_char( "hurt", ch );
else if( ch->hit > 50 )
send_to_char( "in pain", ch );
else if( ch->hit > 35 )
send_to_char( "severely wounded", ch );
else if( ch->hit > 20 )
send_to_char( "writhing in pain", ch );
else if( ch->hit > 0 )
send_to_char( "barely conscious", ch );
else if( ch->hit > -300 )
send_to_char( "uncounscious", ch );
else
send_to_char( "nearly DEAD", ch );
send_to_char( "&W Energy: &G ", ch );
if( ch->move > 500 )
send_to_char( "energetic", ch );
else if( ch->move > 100 )
send_to_char( "rested", ch );
else if( ch->move > 50 )
send_to_char( "worn out", ch );
else if( ch->move > 0 )
send_to_char( "exhausted", ch );
else
send_to_char( "immobile", ch );
send_to_char( "&W Mental: &G ", ch );
if( !IS_NPC( ch ) && ch->pcdata->condition[COND_DRUNK] > 10 )
send_to_char( "drunk", ch );
else
switch ( ch->mental_state / 10 )
{
default:
send_to_char( "completely messed up", ch );
break;
case -10:
case -9:
send_to_char( "barely conscious", ch );
break;
case -8:
case -7:
case -6:
send_to_char( "very drowsy", ch );
break;
case -5:
case -4:
send_to_char( "tired", ch );
break;
case -3:
case -2:
send_to_char( "under the weather", ch );
break;
case -1:
case 0:
case 1:
send_to_char( "great", ch );
break;
case 2:
case 3:
send_to_char( "mind is racing", ch );
break;
case 4:
case 5:
send_to_char( "high as a kite", ch );
break;
case 6:
case 7:
case 8:
send_to_char( "losing reality", ch );
break;
case 9:
case 10:
send_to_char( "psychotic", ch );
break;
}
send_to_char( "\r\n", ch );
send_to_char( "&WArmor: &G", ch );
if( GET_AC( ch ) >= 80 )
send_to_char( "naked", ch );
else if( GET_AC( ch ) >= 60 )
send_to_char( "clothed", ch );
else if( GET_AC( ch ) >= 40 )
send_to_char( "slightly protected", ch );
else if( GET_AC( ch ) >= 20 )
send_to_char( "somewhat protected", ch );
else if( GET_AC( ch ) >= 0 )
send_to_char( "armored", ch );
else if( GET_AC( ch ) >= -20 )
send_to_char( "well armored.", ch );
else if( GET_AC( ch ) >= -40 )
send_to_char( "strongly armored", ch );
else if( GET_AC( ch ) >= -60 )
send_to_char( "heavily armored", ch );
else if( GET_AC( ch ) >= -80 )
send_to_char( "superbly armored", ch );
else if( GET_AC( ch ) >= -100 )
send_to_char( "divinely armored.", ch );
else
send_to_char( "invincible", ch );
send_to_char( " &WAlignment: &G", 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 );
ch_printf( ch, " &WCredits: &G%ld &WBank: &G%ld\r\n",
ch->gold, !IS_NPC( ch ) ? ch->pcdata->bank : 0 );
ch_printf( ch,
"&W------------------------------------------------------------------------\r\n" );
ch_printf( ch,
"&WAutoexit: &G%s &WAutoloot: &G%s &WAutosac: &G%s &WAutocred: &G%s\r\n",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOEXIT ) ) ? "yes" : "no",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOLOOT ) ) ? "yes" : "no",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOSAC ) ) ? "yes" : "no",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOGOLD ) ) ? "yes" : "no" );
ch_printf( ch, "&WWimpy set to &G%d &Wpercent.\r\n", ch->wimpy );
ch_printf( ch,
"&W------------------------------------------------------------------------\r\n" );
if( !IS_NPC( ch ) && ch->pcdata )
{
int sn;
send_to_char( "&WSkilled at: &G", ch );
for( sn = 0; sn < top_sn; sn++ )
if( character_skill_level( ch, sn ) > 0
&& character_skill_level( ch, sn ) < 100 )
ch_printf( ch, "%s ", skill_table[sn]->name );
send_to_char( "\r\n", ch );
send_to_char( "&WAdept at: &G", ch );
for( sn = 0; sn < top_sn; sn++ )
if( character_skill_level( ch, sn ) >= 100 )
ch_printf( ch, "%s ", skill_table[sn]->name );
send_to_char( "\r\n", ch );
}
ch_printf( ch, "&W------------------------------------------------------------------------\r\n" );
if( !IS_NPC( ch ) && IS_IMMORTAL( ch ) )
{
ch_printf( ch, "&WWizInvis level: &G%d &WWizInvis is &G%s\r\n",
ch->pcdata->wizinvis,
IS_SET( ch->act, PLR_WIZINVIS ) ? "ON" : "OFF" );
}
switch ( ch->position )
{
case POS_DEAD:
send_to_char( "&GYou are DEAD!! ", ch );
break;
case POS_MORTAL:
send_to_char( "&GYou are mortally wounded. ", ch );
break;
case POS_INCAP:
send_to_char( "&GYou are incapacitated. ", ch );
break;
case POS_STUNNED:
send_to_char( "&GYou are stunned. ", ch );
break;
case POS_SLEEPING:
send_to_char( "&GYou are sleeping. ", ch );
break;
case POS_RESTING:
send_to_char( "&GYou are resting. ", ch );
break;
case POS_STANDING:
send_to_char( "&GYou are standing. ", ch );
break;
case POS_FIGHTING:
send_to_char( "&GYou are fighting. ", ch );
break;
case POS_MOUNTED:
send_to_char( "&GYou are mounted. ", ch );
break;
case POS_SHOVE:
send_to_char( "&GYou are being shoved. ", ch );
break;
case POS_DRAG:
send_to_char( "&GYou are being dragged. ", ch );
break;
default:
break;
}
if( !IS_NPC( ch ) && ch->pcdata->condition[COND_THIRST] == 0 )
send_to_char( "&GYou are thirsty. ", ch );
if( !IS_NPC( ch ) && ch->pcdata->condition[COND_FULL] == 0 )
send_to_char( "&GYou are hungry. ", ch );
send_to_char( "\r\n", ch );
}
/**
* Command that displays to the character its skills and skill levels.
*
* @param ch Character that initiated the command.
* @param argument Argument passed to the command by the player.
*/
void do_skills ( CHAR_DATA * ch, char *argument )
{
int skills = 0;
int sn;
int level;
send_to_char( "&W-----------------------------------[ &GSkills&W ]-----------------------------------\r\n", ch );
for( sn = 0; sn < top_sn; sn++ )
{
level = character_skill_level( ch, sn );
if( level > 0)
{
/* 15 spaces for the skills */
ch_printf( ch, "&W%-15.15s ", skill_table[sn]->name );
// TODO: base this off of the starting skill level
if (level <= 25)
ch_printf( ch, "&G%-10s", "Inept" );
else if (level <= 50)
ch_printf( ch, "&G%-10s", "Unskilled" );
else if (level <= 60 )
ch_printf( ch, "&G%-10s", "Average" );
else if (level <=70 )
ch_printf( ch, "&G%-10s", "Proficient" );
else if (level < 60)
ch_printf( ch, "&G%-10s", "Skilled" );
else if (level < 90)
ch_printf( ch, "&G%-10s", "Adept" );
else
ch_printf( ch, "&C%-10s", "Mastered" );
/* Only 3 columns of skills */
if ( ++skills % 3 == 0)
send_to_char( "\r\n", ch );
else
send_to_char( " ", ch );
}
}
if (skills == 0)
send_to_char( "&GYou don't have any skills... how sad.\r\n", ch);
else if (skills % 3 != 0) /* Make sure there is a new line after the last skill */
send_to_char( "\r\n", ch );
send_to_char( "&W--------------------------------------------------------------------------------\r\n\r\n", ch );
}
void do_oldscore( CHAR_DATA * ch, char *argument )
{
if( IS_AFFECTED( ch, AFF_POSSESS ) )
{
send_to_char( "You can't do that in your current state of mind!\r\n",
ch );
return;
}
set_char_color( AT_SCORE, ch );
ch_printf( ch,
"You are %s, the %d year old.\r\n",
IS_NPC( ch ) ? ch->name : ch->pcdata->title, get_age( ch ) );
send_to_char( "You are ", ch );
if( ch->hit >= 100 )
send_to_char( "healthy.", ch );
else if( ch->hit > 90 )
send_to_char( "slightly wounded.", ch );
else if( ch->hit > 75 )
send_to_char( "hurt.", ch );
else if( ch->hit > 50 )
send_to_char( "in pain.", ch );
else if( ch->hit > 35 )
send_to_char( "severely wounded.", ch );
else if( ch->hit > 20 )
send_to_char( "writhing in pain.", ch );
else if( ch->hit > 0 )
send_to_char( "barely conscious.", ch );
else if( ch->hit > -300 )
send_to_char( "uncounscious.", ch );
else
send_to_char( "nearly DEAD.", ch );
send_to_char( " You are ", ch );
if( ch->move > 500 )
send_to_char( "energetic.\r\n", ch );
else if( ch->move > 100 )
send_to_char( "rested.\r\n", ch );
else if( ch->move > 50 )
send_to_char( "worn out.\r\n", ch );
else if( ch->move > 0 )
send_to_char( "exhausted.\r\n", ch );
else
send_to_char( "to tired to move.\r\n", ch );
if( !IS_NPC( ch ) && ch->pcdata->condition[COND_DRUNK] > 10 )
send_to_char( "You are drunk.\r\n", ch );
if( !IS_NPC( ch ) && ch->pcdata->condition[COND_THIRST] == 0 )
send_to_char( "You are thirsty.\r\n", ch );
if( !IS_NPC( ch ) && ch->pcdata->condition[COND_FULL] == 0 )
send_to_char( "You are hungry.\r\n", ch );
switch ( ch->mental_state / 10 )
{
default:
send_to_char( "You're completely messed up!", ch );
break;
case -10:
send_to_char( "You're barely conscious.", ch );
break;
case -9:
send_to_char( "You can barely keep your eyes open.", ch );
break;
case -8:
send_to_char( "You're extremely drowsy.", ch );
break;
case -7:
send_to_char( "You feel very unmotivated.", ch );
break;
case -6:
send_to_char( "You feel sedated.", ch );
break;
case -5:
send_to_char( "You feel sleepy.", ch );
break;
case -4:
send_to_char( "You feel tired.", ch );
break;
case -3:
send_to_char( "You could use a rest.", ch );
break;
case -2:
send_to_char( "You feel a little under the weather.", ch );
break;
case -1:
send_to_char( "You feel fine.", ch );
break;
case 0:
send_to_char( "You feel great.", ch );
break;
case 1:
send_to_char( "You feel energetic.", ch );
break;
case 2:
send_to_char( "Your mind is racing.", ch );
break;
case 3:
send_to_char( "You can't think straight.", ch );
break;
case 4:
send_to_char( "Your mind is going 100 miles an hour.", ch );
break;
case 5:
send_to_char( "You're high as a kite.", ch );
break;
case 6:
send_to_char( "Your mind and body are slipping appart.", ch );
break;
case 7:
send_to_char( "Reality is slipping away.", ch );
break;
case 8:
send_to_char( "You have no idea what is real, and what is not.", ch );
break;
case 9:
send_to_char( "You feel immortal.", ch );
break;
case 10:
send_to_char( "You are a Supreme Entity.", ch );
break;
}
switch ( ch->position )
{
case POS_DEAD:
send_to_char( " You are DEAD!!\r\n", ch );
break;
case POS_MORTAL:
send_to_char( " You are mortally wounded.\r\n", ch );
break;
case POS_INCAP:
send_to_char( " You are incapacitated.\r\n", ch );
break;
case POS_STUNNED:
send_to_char( " You are stunned.\r\n", ch );
break;
case POS_SLEEPING:
send_to_char( " You are sleeping.\r\n", ch );
break;
case POS_RESTING:
send_to_char( " You are resting.\r\n", ch );
break;
case POS_STANDING:
send_to_char( " You are standing.\r\n", ch );
break;
case POS_FIGHTING:
send_to_char( " You are fighting.\r\n", ch );
break;
case POS_MOUNTED:
send_to_char( " Mounted.\r\n", ch );
break;
case POS_SHOVE:
send_to_char( " Being shoved.\r\n", ch );
break;
case POS_DRAG:
send_to_char( " Being dragged.\r\n", ch );
break;
default:
send_to_char( "\r\n", ch );
break;
}
send_to_char( "You are ", ch );
if( GET_AC( ch ) >= 101 )
send_to_char( "WORSE than naked!", ch );
else if( GET_AC( ch ) >= 80 )
send_to_char( "naked.", ch );
else if( GET_AC( ch ) >= 60 )
send_to_char( "wearing clothes.", ch );
else if( GET_AC( ch ) >= 40 )
send_to_char( "slightly armored.", ch );
else if( GET_AC( ch ) >= 20 )
send_to_char( "somewhat armored.", ch );
else if( GET_AC( ch ) >= 0 )
send_to_char( "armored.", ch );
else if( GET_AC( ch ) >= -20 )
send_to_char( "well armored.", ch );
else if( GET_AC( ch ) >= -40 )
send_to_char( "strongly armored.", ch );
else if( GET_AC( ch ) >= -60 )
send_to_char( "heavily armored.", ch );
else if( GET_AC( ch ) >= -80 )
send_to_char( "superbly armored.", ch );
else if( GET_AC( ch ) >= -100 )
send_to_char( "divinely armored.", ch );
else
send_to_char( "invincible!", ch );
send_to_char( " You are ", ch );
if( ch->alignment > 900 )
send_to_char( "angelic.\r\n", ch );
else if( ch->alignment > 700 )
send_to_char( "saintly.\r\n", ch );
else if( ch->alignment > 350 )
send_to_char( "good.\r\n", ch );
else if( ch->alignment > 100 )
send_to_char( "kind.\r\n", ch );
else if( ch->alignment > -100 )
send_to_char( "neutral.\r\n", ch );
else if( ch->alignment > -350 )
send_to_char( "mean.\r\n", ch );
else if( ch->alignment > -700 )
send_to_char( "evil.\r\n", ch );
else if( ch->alignment > -900 )
send_to_char( "demonic.\r\n", ch );
else
send_to_char( "satanic.\r\n", ch );
ch_printf( ch, "You have have %d credits.\r\n", ch->gold );
ch_printf( ch,
"Autoexit: %s Autoloot: %s Autosac: %s Autocred: %s\r\n",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOEXIT ) ) ? "yes" : "no",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOLOOT ) ) ? "yes" : "no",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOSAC ) ) ? "yes" : "no",
( !IS_NPC( ch )
&& IS_SET( ch->act, PLR_AUTOGOLD ) ) ? "yes" : "no" );
ch_printf( ch, "Wimpy set to %d percent.\r\n", ch->wimpy );
if( !IS_NPC( ch ) && ch->pcdata )
{
int sn;
send_to_char( "You are skilled at: ", ch );
for( sn = 0; sn < top_sn; sn++ )
if( character_skill_level( ch, sn ) > 0
&& character_skill_level( ch, sn ) < 100 )
ch_printf( ch, "%s ", skill_table[sn]->name );
send_to_char( "\r\n", ch );
send_to_char( "You are an adept of: ", ch );
for( sn = 0; sn < top_sn; sn++ )
if( character_skill_level( ch, sn ) >= 100 )
ch_printf( ch, "%s ", skill_table[sn]->name );
send_to_char( "\r\n", ch );
}
if( !IS_NPC( ch ) && IS_IMMORTAL( ch ) )
{
ch_printf( ch, "WizInvis level: %d WizInvis is %s\r\n",
ch->pcdata->wizinvis,
IS_SET( ch->act, PLR_WIZINVIS ) ? "ON" : "OFF" );
}
}
void do_affected( CHAR_DATA * ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
if( IS_NPC( ch ) )
return;
argument = one_argument( argument, arg );
if( !str_cmp( arg, "by" ) )
{
set_char_color( AT_BLUE, ch );
send_to_char( "\r\nImbued with:\r\n", ch );
set_char_color( AT_SCORE, ch );
ch_printf( ch, "%s\r\n", affect_bit_name( ch->affected_by ) );
return;
}
if( !ch->first_affect )
{
set_char_color( AT_SCORE, ch );
send_to_char( "\r\nNo skill affects you.\r\n", ch );
}
else
{
AFFECT_DATA *paf = NULL;
SKILLTYPE *skill = NULL;
send_to_char( "\r\n", ch );
for( paf = ch->first_affect; paf; paf = paf->next )
if( ( skill = get_skilltype( paf->type ) ) != NULL )
{
set_char_color( AT_BLUE, ch );
send_to_char( "Affected: ", ch );
set_char_color( AT_SCORE, ch );
ch_printf( ch, "%-18s\r\n", skill->name );
}
}
}
void do_inventory( CHAR_DATA * ch, char *argument )
{
set_char_color( AT_RED, ch );
send_to_char( "You are carrying:\r\n", ch );
show_list_to_char( ch->first_carrying, ch, TRUE, TRUE );
}
void do_equipment( CHAR_DATA * ch, char *argument )
{
OBJ_DATA *obj = NULL;
int iWear = 0, dam = 0;
bool found = FALSE;
char buf[MAX_STRING_LENGTH];
*buf = '\0';
set_char_color( AT_RED, ch );
send_to_char( "You are using:\r\n", ch );
set_char_color( AT_OBJECT, ch );
for( iWear = 0; iWear < MAX_WEAR; iWear++ )
{
for( obj = ch->first_carrying; obj; obj = obj->next_content )
if( obj->wear_loc == iWear )
{
send_to_char( where_name[iWear], ch );
if( can_see_obj( ch, obj ) )
{
send_to_char( format_obj_to_char( obj, ch, TRUE ), ch );
strcpy( buf, "" );
switch ( obj->item_type )
{
default:
break;
case ITEM_ARMOR:
if( obj->value[1] == 0 )
obj->value[1] = obj->value[0];
if( obj->value[1] == 0 )
obj->value[1] = 1;
dam = ( short ) ( ( obj->value[0] * 10 ) / obj->value[1] );
if( dam >= 10 )
strcat( buf, " (superb) " );
else if( dam >= 7 )
strcat( buf, " (good) " );
else if( dam >= 5 )
strcat( buf, " (worn) " );
else if( dam >= 3 )
strcat( buf, " (poor) " );
else if( dam >= 1 )
strcat( buf, " (awful) " );
else if( dam == 0 )
strcat( buf, " (broken) " );
send_to_char( buf, ch );
break;
case ITEM_WEAPON:
dam = INIT_WEAPON_CONDITION - obj->value[0];
if( dam < 2 )
strcat( buf, " (superb) " );
else if( dam < 4 )
strcat( buf, " (good) " );
else if( dam < 7 )
strcat( buf, " (worn) " );
else if( dam < 10 )
strcat( buf, " (poor) " );
else if( dam < 12 )
strcat( buf, " (awful) " );
else if( dam == 12 )
strcat( buf, " (broken) " );
send_to_char( buf, ch );
if( obj->value[3] == WEAPON_BLASTER )
{
if( obj->blaster_setting == BLASTER_FULL )
ch_printf( ch, "FULL" );
else if( obj->blaster_setting == BLASTER_HIGH )
ch_printf( ch, "HIGH" );
else if( obj->blaster_setting == BLASTER_NORMAL )
ch_printf( ch, "NORMAL" );
else if( obj->blaster_setting == BLASTER_HALF )
ch_printf( ch, "HALF" );
else if( obj->blaster_setting == BLASTER_LOW )
ch_printf( ch, "LOW" );
else if( obj->blaster_setting == BLASTER_STUN )
ch_printf( ch, "STUN" );
ch_printf( ch, " %d", obj->value[4] );
}
else if( ( obj->value[3] == WEAPON_LIGHTSABER ||
obj->value[3] == WEAPON_VIBRO_BLADE ) )
{
ch_printf( ch, "%d", obj->value[4] );
}
break;
}
send_to_char( "\r\n", ch );
}
else
send_to_char( "something.\r\n", ch );
found = TRUE;
}
}
if( !found )
send_to_char( "Nothing.\r\n", ch );
}
void set_title( CHAR_DATA * ch, const char *title )
{
char buf[MAX_STRING_LENGTH];
*buf = '\0';
if( IS_NPC( ch ) )
{
bug( "Set_title: NPC.", 0 );
return;
}
if( isalpha( ( int ) title[0] ) || isdigit( ( int ) title[0] ) )
{
buf[0] = ' ';
strcpy( buf + 1, title );
}
else
{
strcpy( buf, title );
}
STRFREE( ch->pcdata->title );
ch->pcdata->title = STRALLOC( buf );
}
void do_title( CHAR_DATA * ch, char *argument )
{
if( IS_NPC( ch ) )
return;
if( IS_SET( ch->pcdata->flags, PCFLAG_NOTITLE ) )
{
send_to_char( "You try but the Force resists you.\r\n", ch );
return;
}
if( argument[0] == '\0' )
{
send_to_char( "Change your title to what?\r\n", ch );
return;
}
if( !IS_IMMORTAL( ch ) && ( !nifty_is_name( ch->name, argument ) ) )
{
send_to_char( "You must include your name somewhere in your title!",
ch );
return;
}
smash_tilde( argument );
set_title( ch, argument );
send_to_char( "Ok.\r\n", ch );
}
void do_homepage( CHAR_DATA * ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
if( IS_NPC( ch ) )
return;
if( argument[0] == '\0' )
{
if( !ch->pcdata->homepage )
ch->pcdata->homepage = str_dup( "" );
ch_printf( ch, "Your homepage is: %s\r\n",
show_tilde( ch->pcdata->homepage ) );
return;
}
if( !str_cmp( argument, "clear" ) )
{
if( ch->pcdata->homepage )
DISPOSE( ch->pcdata->homepage );
ch->pcdata->homepage = str_dup( "" );
send_to_char( "Homepage cleared.\r\n", ch );
return;
}
if( strstr( argument, "://" ) )
strcpy( buf, argument );
else
sprintf( buf, "http://%s", argument );
if( strlen( buf ) > 70 )
buf[70] = '\0';
hide_tilde( buf );
if( ch->pcdata->homepage )
DISPOSE( ch->pcdata->homepage );
ch->pcdata->homepage = str_dup( buf );
send_to_char( "Homepage set.\r\n", ch );
}
/*
* Set your personal description -Thoric
*/
void do_description( CHAR_DATA * ch, char *argument )
{
if( IS_NPC( ch ) )
{
send_to_char( "Monsters are too dumb to do that!\r\n", ch );
return;
}
if( !ch->desc )
{
bug( "do_description: no descriptor", 0 );
return;
}
switch ( ch->substate )
{
default:
bug( "do_description: illegal substate", 0 );
return;
case SUB_RESTRICTED:
send_to_char
( "You cannot use this command from within another command.\r\n",
ch );
return;
case SUB_NONE:
ch->substate = SUB_PERSONAL_DESC;
ch->dest_buf = ch;
start_editing( ch, ch->description );
return;
case SUB_PERSONAL_DESC:
STRFREE( ch->description );
ch->description = copy_buffer( ch );
stop_editing( ch );
return;
}
}
/* Ripped off do_description for whois bio's -- Scryn*/
void do_bio( CHAR_DATA * ch, char *argument )
{
if( IS_NPC( ch ) )
{
send_to_char( "Mobs can't set bio's!\r\n", ch );
return;
}
if( !ch->desc )
{
bug( "do_bio: no descriptor", 0 );
return;
}
switch ( ch->substate )
{
default:
bug( "do_bio: illegal substate", 0 );
return;
case SUB_RESTRICTED:
send_to_char
( "You cannot use this command from within another command.\r\n",
ch );
return;
case SUB_NONE:
ch->substate = SUB_PERSONAL_BIO;
ch->dest_buf = ch;
start_editing( ch, ch->pcdata->bio );
return;
case SUB_PERSONAL_BIO:
STRFREE( ch->pcdata->bio );
ch->pcdata->bio = copy_buffer( ch );
stop_editing( ch );
return;
}
}
void do_prompt( CHAR_DATA * ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
if( IS_NPC( ch ) )
{
send_to_char( "NPC's can't change their prompt..\r\n", ch );
return;
}
smash_tilde( argument );
one_argument( argument, arg );
if( !*arg )
{
send_to_char( "Set prompt to what? (try help prompt)\r\n", ch );
return;
}
if( ch->pcdata->prompt )
STRFREE( ch->pcdata->prompt );
if( strlen( argument ) > 128 )
argument[128] = '\0';
/* Can add a list of pre-set prompts here if wanted.. perhaps
'prompt 1' brings up a different, pre-set prompt */
if( !str_cmp( arg, "default" ) )
ch->pcdata->prompt = STRALLOC( "" );
else
ch->pcdata->prompt = STRALLOC( argument );
send_to_char( "Ok.\r\n", ch );
}