Battle Prompt is a different type of prompt coded by Remcon, one of my coders. If you have any questions on this, feel free to ask me, or the smaug mailing list. In comm.c search for display_prompt and you can change it all with this or just add case 'C' case 'c' case 'e' case 'E' which every you want to do :) void display_prompt( DESCRIPTOR_DATA *d ) { CHAR_DATA *ch = d->character; CHAR_DATA *och = (d->original ? d->original : d->character); CHAR_DATA *victim; bool ansi = (!IS_NPC(och) && xIS_SET(och->act, PLR_ANSI)); const char *prompt; const char *helpstart = ""; char buf[MAX_STRING_LENGTH]; char *pbuf = buf; int stat, percent; if ( !ch ) { bug( "display_prompt: NULL ch" ); return; } if ( !IS_NPC(ch) && !IS_SET(ch->pcdata->flags, PCFLAG_HELPSTART ) ) prompt = helpstart; else if ( !IS_NPC(ch) && ch->substate != SUB_NONE && ch->pcdata->subprompt && ch->pcdata->subprompt[0] != '\0' ) prompt = ch->pcdata->subprompt; else if (IS_NPC (ch) || (!ch->fighting && (!ch->pcdata->prompt || !*ch->pcdata->prompt) ) ) prompt = default_prompt (ch); else if ( ch->fighting ) { if ( !ch->pcdata->fprompt || !*ch->pcdata->fprompt ) prompt = default_fprompt ( ch ); else prompt = ch->pcdata->fprompt; } else prompt = ch->pcdata->prompt; if ( ansi ) { strcpy(pbuf, "\033[m"); d->prevcolor = 0x07; pbuf += 3; } /* Clear out old color stuff */ /* make_color_sequence(NULL, NULL, NULL);*/ for ( ; *prompt; prompt++ ) { /* * '&' = foreground color/intensity bit * '^' = background color/blink bit * '%' = prompt commands * Note: foreground changes will revert background to 0 (black) */ if ( *prompt != '&' && *prompt != '^' && *prompt != '%' ) { *(pbuf++) = *prompt; continue; } ++prompt; if ( !*prompt ) break; if ( *prompt == *(prompt-1) ) { *(pbuf++) = *prompt; continue; } switch(*(prompt-1)) { default: bug( "Display_prompt: bad command char '%c'.", *(prompt-1) ); break; case '&': case '^': stat = make_color_sequence(&prompt[-1], pbuf, d); if ( stat < 0 ) --prompt; else if ( stat > 0 ) pbuf += stat; break; case '%': *pbuf = '\0'; stat = 0x80000000; switch(*prompt) { case '%': *pbuf++ = '%'; *pbuf = '\0'; break; case 'a': if ( ch->level >= 10 ) stat = ch->alignment; else if ( IS_GOOD(ch) ) strcpy(pbuf, "good"); else if ( IS_EVIL(ch) ) strcpy(pbuf, "evil"); else strcpy(pbuf, "neutral"); break; case 'A': sprintf( pbuf, "%s%s%s", IS_AFFECTED( ch, AFF_INVISIBLE ) ? "I" : "", IS_AFFECTED( ch, AFF_HIDE ) ? "H" : "", IS_AFFECTED( ch, AFF_SNEAK ) ? "S" : "" ); break; case 'C': if (ch->max_hit > 0) percent = (100 * ch->hit ) / ch->max_hit; else percent = -1; if (percent >= 60) sprintf (pbuf, "%s: [\x1b[1;32m%d%%\x1b[0m]", ch->name, percent); else if (percent >= 40 && percent < 60) sprintf (pbuf, "%s: [\x1b[1;33m%d%%\x1b[0m]", ch->name, percent); else if (percent >= 20 && percent < 40) sprintf (pbuf, "%s: [\x1b[1;34m%d%%\x1b[0m]", ch->name, percent); else sprintf (pbuf, "%s: [\x1b[1;31m%d%%\x1b[0m]", ch->name, percent); break; case 'c': if (( victim = who_fighting( ch ) ) != NULL) { if (victim->max_hit > 0) percent = (100 * victim->hit ) / victim->max_hit; else percent = -1; if (percent >= 60) sprintf (pbuf, "%s: [\x1b[1;32m%d%%\x1b[0m]", victim->name, percent); else if (percent >= 40 && percent < 60) sprintf (pbuf, "%s: [\x1b[1;33m%d%%\x1b[0m]", victim->name, percent); else if (percent >= 20 && percent < 40) sprintf (pbuf, "%s: [\x1b[1;34m%d%%\x1b[0m]", victim->name, percent); else sprintf (pbuf, "%s: [\x1b[1;31m%d%%\x1b[0m]", victim->name, percent); } break; case 'e': if (( victim = who_fighting( ch ) ) != NULL) { if (victim->max_hit > 0) percent = (100 * victim->hit) / victim->max_hit; else percent = -1; if (percent >= 100) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m||||\x1b[0m]", victim->name); else if (percent >= 90) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m|||\x1b[0m ]", victim->name); else if (percent >= 80) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m||\x1b[0m ]", victim->name); else if (percent >= 70) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m|\x1b[0m ]", victim->name); else if (percent >= 60) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m\x1b[0m ]", victim->name); else if (percent >= 50) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m|\x1b[1;32m\x1b[0m ]", victim->name); else if (percent >= 40) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m\x1b[1;32m\x1b[0m ]", victim->name); else if (percent >= 30) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m|\x1b[1;33m\x1b[1;32m\x1b[0m ]", victim->name); else if (percent >= 20) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m\x1b[1;33m\x1b[1;32m\x1b[0m ]", victim->name); else if (percent >= 10) sprintf (pbuf, "%s: [\x1b[1;31m|\x1b[1;34m\x1b[1;33m\x1b[1;32m\x1b[0m ]", victim->name); else sprintf (pbuf, "%s: [\x1b[1;31m %d%%\x1b[0m ]", ch->name, percent); } break; case 'E': if (ch->max_hit > 0) percent = (100 * ch->hit) / ch->max_hit; else percent = -1; if (percent >= 100) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m||||\x1b[0m]", ch->name); else if (percent >= 90) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m|||\x1b[0m ]", ch->name); else if (percent >= 80) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m||\x1b[0m ]", ch->name); else if (percent >= 70) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m|\x1b[0m ]", ch->name); else if (percent >= 60) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m||\x1b[1;32m\x1b[0m ]", ch->name); else if (percent >= 50) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m|\x1b[1;32m\x1b[0m ]", ch->name); else if (percent >= 40) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m||\x1b[1;33m\x1b[1;32m\x1b[0m ]", ch->name); else if (percent >= 30) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m|\x1b[1;33m\x1b[1;32m\x1b[0m ]", ch->name); else if (percent >= 20) sprintf (pbuf, "%s: [\x1b[1;31m||\x1b[1;34m\x1b[1;33m\x1b[1;32m\x1b[0m ]", ch->name); else if (percent >= 10) sprintf (pbuf, "%s: [\x1b[1;31m|\x1b[1;34m\x1b[1;33m\x1b[1;32m\x1b[0m ]", ch->name); else sprintf (pbuf, "%s: [\x1b[1;31m %d%%\x1b[0m ]", victim->name, percent); break; case 'h': stat = ch->hit; break; case 'H': stat = ch->max_hit; break; case 'm': if ( IS_VAMPIRE(ch) ) stat = 0; else stat = ch->mana; break; case 'M': if ( IS_VAMPIRE(ch) ) stat = 0; else stat = ch->max_mana; break; case 'N': /* Tank */ if ( !IS_IMMORTAL(ch) ) break; if ( !ch->fighting || ( victim = ch->fighting->who ) == NULL ) strcpy( pbuf, "N/A" ); else if(!victim->fighting||(victim=victim->fighting->who)==NULL) strcpy( pbuf, "N/A" ); else { if ( ch == victim ) strcpy ( pbuf, "You" ); else if ( IS_NPC(victim) ) strcpy ( pbuf, victim->short_descr ); else strcpy ( pbuf, victim->name ); pbuf[0] = UPPER( pbuf[0] ); } break; case 'n': if ( !IS_IMMORTAL(ch) ) break; if (!ch->fighting || (victim = ch->fighting->who) == NULL ) strcpy( pbuf, "N/A" ); else { if ( ch == victim ) strcpy ( pbuf, "You" ); else if ( IS_NPC(victim) ) strcpy ( pbuf, victim->short_descr ); else strcpy ( pbuf, victim->name ); pbuf[0] = UPPER( pbuf[0] ); } break; case 'T': if ( time_info.hour < 5 ) strcpy( pbuf, "night" ); else if ( time_info.hour < 6 ) strcpy( pbuf, "dawn" ); else if ( time_info.hour < 19 ) strcpy( pbuf, "day" ); else if ( time_info.hour < 21 ) strcpy( pbuf, "dusk" ); else strcpy( pbuf, "night" ); break; case 'b': if ( IS_VAMPIRE(ch) ) stat = ch->pcdata->condition[COND_BLOODTHIRST]; else stat = 0; break; case 'B': if ( IS_VAMPIRE(ch) ) stat = ch->level + 10; else stat = 0; break; case 'u': stat = num_descriptors; break; case 'U': stat = sysdata.maxplayers; break; case 'v': stat = ch->move; break; case 'V': stat = ch->max_move; break; case 'g': stat = ch->gold; break; case 'r': if ( IS_IMMORTAL(och) ) stat = ch->in_room->vnum; break; case 'F': if ( IS_IMMORTAL( och ) ) sprintf( pbuf, "%s", flag_string( ch->in_room->room_flags, r_flags) ); break; case 'R': if ( xIS_SET(och->act, PLR_ROOMVNUM) ) sprintf(pbuf, "<#%d> ", ch->in_room->vnum); break; case 'x': stat = ch->exp; break; case 'X': stat = exp_level(ch, ch->level+1) - ch->exp; break; case 'o': /* display name of object on auction */ if ( auction->item ) strcpy( pbuf, auction->item->name ); break; case 'S': if ( ch->style == STYLE_BERSERK ) strcpy( pbuf, "B" ); else if ( ch->style == STYLE_AGGRESSIVE ) strcpy( pbuf, "A" ); else if ( ch->style == STYLE_DEFENSIVE ) strcpy( pbuf, "D" ); else if ( ch->style == STYLE_EVASIVE ) strcpy( pbuf, "E" ); else strcpy( pbuf, "S" ); break; case 'i': if ( (!IS_NPC(ch) && xIS_SET(ch->act, PLR_WIZINVIS)) || (IS_NPC(ch) && xIS_SET(ch->act, ACT_MOBINVIS)) ) sprintf(pbuf, "(Invis %d) ", (IS_NPC(ch) ? ch->mobinvis : ch->pcdata->wizinvis)); else if ( IS_AFFECTED(ch, AFF_INVISIBLE) ) sprintf(pbuf, "(Invis) " ); break; case 'I': stat = (IS_NPC(ch) ? (xIS_SET(ch->act, ACT_MOBINVIS) ? ch->mobinvis : 0) : (xIS_SET(ch->act, PLR_WIZINVIS) ? ch->pcdata->wizinvis : 0)); break; } if ( stat != 0x80000000 ) sprintf(pbuf, "%d", stat); pbuf += strlen(pbuf); break; } } *pbuf = '\0'; write_to_buffer(d, buf, (pbuf-buf)); return; }