diff -ur /proj/Mud/servers/envy2.0/src/act_comm.c ./envy2.0-colour/src/act_comm.c --- /proj/Mud/servers/envy2.0/src/act_comm.c Wed Dec 27 06:17:54 1995 +++ ./envy2.0-colour/src/act_comm.c Sun Oct 20 18:55:53 1996 @@ -531,8 +531,44 @@ sprintf( buf, "$n %ss '$t'", verb ); break; + case CHANNEL_AUCTION: + sprintf( buf, "{yYou %s '%s'{x\n\r", verb, argument ); + send_to_char( buf, ch ); + sprintf( buf, "{y$n %ss '$t'{x", verb ); + break; + + case CHANNEL_MUSIC: + sprintf( buf, "{yYou %s '%s'{x\n\r", verb, argument ); + send_to_char( buf, ch ); + sprintf( buf, "{y$n %ss '$t'{x", verb ); + break; + + case CHANNEL_QUESTION: + sprintf( buf, "{yYou %s '%s'{x\n\r", verb, argument ); + send_to_char( buf, ch ); + sprintf( buf, "{y$n %ss '$t'{x", verb ); + break; + + case CHANNEL_SHOUT: + sprintf( buf, "{rYou %s '%s'{x\n\r", verb, argument ); + send_to_char( buf, ch ); + sprintf( buf, "{r$n %ss '$t'{x", verb ); + break; + + case CHANNEL_YELL: + sprintf( buf, "{bYou %s '%s'{x\n\r", verb, argument ); + send_to_char( buf, ch ); + sprintf( buf, "{b$n %ss '$t'{x", verb ); + break; + + case CHANNEL_CHAT: + sprintf( buf, "{mYou %s '%s'{x\n\r", verb, argument ); + send_to_char( buf, ch ); + sprintf( buf, "{m$n %ss '$t'{x", verb ); + break; + case CHANNEL_IMMTALK: - sprintf( buf, "$n: $t" ); + sprintf( buf, "{c[{y$n{c]: $t{x" ); position = ch->position; ch->position = POS_STANDING; act( buf, ch, argument, NULL, TO_CHAR ); @@ -651,19 +687,19 @@ { if ( argument[0] == '\0' ) { - send_to_char( "Say what?\n\r", ch ); + send_to_char_bw( "Say what?\n\r", ch ); return; } if ( IS_AFFECTED( ch, AFF_MUTE ) || IS_SET( ch->in_room->room_flags, ROOM_CONE_OF_SILENCE ) ) { - send_to_char( "You can't seem to break the silence.\n\r", ch ); + send_to_char_bw( "You can't seem to break the silence.\n\r", ch ); return; } - act( "$n says '$T'", ch, NULL, argument, TO_ROOM ); - act( "You say '$T'", ch, NULL, argument, TO_CHAR ); + act( "{g$n says '$T'{x", ch, NULL, argument, TO_ROOM ); + act( "{gYou say '$T'{x", ch, NULL, argument, TO_CHAR ); return; } @@ -1658,5 +1694,37 @@ if ( ach->leader ) ach = ach->leader; if ( bch->leader ) bch = bch->leader; return ach == bch; +} + +/* + * Colour setting and unsetting, way cool, Lope Oct '94 + */ +void do_colour( CHAR_DATA *ch, char *argument ) +{ + char arg[ MAX_STRING_LENGTH ]; + + argument = one_argument( argument, arg ); + + if( !*arg ) + { + if( !IS_SET( ch->act, PLR_COLOUR ) ) + { + SET_BIT( ch->act, PLR_COLOUR ); + send_to_char( "{bC{ro{yl{co{mu{gr{x is now {rON{x, Way Cool!\n\r", ch ); + } + else + { + send_to_char_bw( "Colour is now OFF, <sigh>\n\r", ch ); + REMOVE_BIT( ch->act, PLR_COLOUR ); + } + return; + } + else + { + send_to_char_bw( "Colour Configuration is unavailable in this\n\r", ch ); + send_to_char_bw( "version of colour, sorry\n\r", ch ); + } + + return; } diff -ur /proj/Mud/servers/envy2.0/src/comm.c ./envy2.0-colour/src/comm.c --- /proj/Mud/servers/envy2.0/src/comm.c Sun Oct 20 19:51:31 1996 +++ ./envy2.0-colour/src/comm.c Fri Oct 25 22:48:26 1996 @@ -1297,14 +1297,16 @@ const char *str; const char *i; char *point; - char buf [ MAX_STRING_LENGTH ]; - char buf2 [ MAX_STRING_LENGTH ]; + char *pbuff; + char buffer[ MAX_STRING_LENGTH ]; + char buf [ MAX_STRING_LENGTH ]; + char buf2 [ MAX_STRING_LENGTH ]; /* Will always have a pc ch after this */ ch = ( d->original ? d->original : d->character ); if( !ch->pcdata->prompt || ch->pcdata->prompt[0] == '\0' ) { - send_to_char( "\n\r\n\r", ch ); + send_to_char_bw( "\n\r\n\r", ch ); return; } @@ -1394,7 +1396,10 @@ while( ( *point = *i ) != '\0' ) ++point, ++i; } - write_to_buffer( d, buf, point - buf ); + *point = '\0'; + pbuff = buffer; + colourconv( pbuff, buf, ch ); + write_to_buffer( d, buffer, 0 ); return; } @@ -1887,7 +1892,7 @@ [ch->sex == SEX_FEMALE ? 1 : 0] ); set_title( ch, buf ); free_string( ch->pcdata->prompt ); - ch->pcdata->prompt = str_dup( "<%hhp %mm %vmv> " ); + ch->pcdata->prompt = str_dup( "{c<%hhp %mm %vmv>{x " ); obj = create_object( get_obj_index( OBJ_VNUM_SCHOOL_BANNER ), 0 ); obj_to_char( obj, ch ); @@ -2165,16 +2170,16 @@ /* * Write to one char. */ -void send_to_char( const char *txt, CHAR_DATA *ch ) +void send_to_char_bw( const char *txt, CHAR_DATA *ch ) { - if ( !txt || !ch->desc ) + if( !txt || !ch->desc ) return; /* * Bypass the paging procedure if the text output is small * Saves process time. */ - if ( strlen( txt ) < 600 ) + if( strlen( txt ) < 600 ) write_to_buffer( ch->desc, txt, strlen( txt ) ); else { @@ -2187,6 +2192,68 @@ return; } +/* + * Send to one char, new colour version, by Lope. + */ +void send_to_char( const char *txt, CHAR_DATA *ch ) +{ + const char *point; + char *point2; + char buf[ MAX_STRING_LENGTH*4 ]; + int skip = 0; + + buf[0] = '\0'; + point2 = buf; + if ( txt && ch->desc ) + { + if ( IS_SET( ch->act, PLR_COLOUR ) ) + { + for( point = txt ; *point ; point++ ) + { + if( *point == '{' ) + { + point++; + skip = colour( *point, ch, point2 ); + while( skip-- > 0 ) + ++point2; + continue; + } + + *point2 = *point; *++point2 = '\0'; + } + *point2 = '\0'; + free_string( ch->desc->showstr_head ); + ch->desc->showstr_head = str_dup( buf ); + ch->desc->showstr_point = ch->desc->showstr_head; + show_string( ch->desc, "" ); + } + else + { + for( point = txt ; *point ; point++ ) + { + if( *point == '{' ) + { + point++; + if( *point == '{' ) + { + *point2 = *point; + *++point2 = '\0'; + } + continue; + } + *point2 = *point; + *++point2 = '\0'; + } + *point2 = '\0'; + free_string( ch->desc->showstr_head ); + ch->desc->showstr_head = str_dup( buf ); + ch->desc->showstr_point = ch->desc->showstr_head; + show_string( ch->desc, "" ); + } + } + return; +} + /* The heart of the pager. Thanks to N'Atas-Ha, ThePrincedom for porting this SillyMud code for MERC 2.0 and laying down the groundwork. Thanks to Blackstar, hopper.cs.uiowa.edu 4000 for which @@ -2272,9 +2339,10 @@ } /* On advice by Scott Mobley and others */ +/* *scan++ = '\n'; *scan++ = '\r'; - +*/ *scan = 0; write_to_buffer( d, buffer, strlen( buffer ) ); @@ -2304,8 +2372,10 @@ const char *str; const char *i; char *point; + char *pbuff; char buf [ MAX_STRING_LENGTH ]; char buf1 [ MAX_STRING_LENGTH ]; + char buffer [ MAX_STRING_LENGTH*2 ]; char fname [ MAX_INPUT_LENGTH ]; /* @@ -2412,11 +2482,14 @@ ++point, ++i; } - *point++ = '\n'; - *point++ = '\r'; - buf[0] = UPPER( buf[0] ); - if ( to->desc ) - write_to_buffer( to->desc, buf, point - buf ); + *point++ = '\n'; + *point++ = '\r'; + *point = '\0'; + buf[0] = UPPER( buf[0] ); + pbuff = buffer; + colourconv( pbuff, buf, to ); + if( to->desc ) + write_to_buffer( to->desc, buffer, 0 ); } return; @@ -2434,3 +2507,128 @@ tp->tv_usec = 0; } #endif + +int colour( char type, CHAR_DATA *ch, char *string ) +{ + char code[ 20 ]; + char *p = '\0'; + + if( IS_NPC( ch ) ) + return( 0 ); + + switch( type ) + { + default: + sprintf( code, CLEAR ); + break; + case 'x': + sprintf( code, CLEAR ); + break; + case 'b': + sprintf( code, C_BLUE ); + break; + case 'c': + sprintf( code, C_CYAN ); + break; + case 'g': + sprintf( code, C_GREEN ); + break; + case 'm': + sprintf( code, C_MAGENTA ); + break; + case 'r': + sprintf( code, C_RED ); + break; + case 'w': + sprintf( code, C_WHITE ); + break; + case 'y': + sprintf( code, C_YELLOW ); + break; + case 'B': + sprintf( code, C_B_BLUE ); + break; + case 'C': + sprintf( code, C_B_CYAN ); + break; + case 'G': + sprintf( code, C_B_GREEN ); + break; + case 'M': + sprintf( code, C_B_MAGENTA ); + break; + case 'R': + sprintf( code, C_B_RED ); + break; + case 'W': + sprintf( code, C_B_WHITE ); + break; + case 'Y': + sprintf( code, C_B_YELLOW ); + break; + case 'D': + sprintf( code, C_D_GREY ); + break; + case '*': + sprintf( code, "%c", 007 ); + break; + case '/': + sprintf( code, "%c", 012 ); + break; + case '{': + sprintf( code, "%c", '{' ); + break; + } + + p = code; + while( *p != '\0' ) + { + *string = *p++; + *++string = '\0'; + } + + return( strlen( code ) ); +} + +void colourconv( char *buffer, const char *txt , CHAR_DATA *ch ) +{ + const char *point; + int skip = 0; + + if( ch->desc && txt ) + { + if( IS_SET( ch->act, PLR_COLOUR ) ) + { + for( point = txt ; *point ; point++ ) + { + if( *point == '{' ) + { + point++; + skip = colour( *point, ch, buffer ); + while( skip-- > 0 ) + ++buffer; + continue; + } + *buffer = *point; + *++buffer = '\0'; + } + *buffer = '\0'; + } + else + { + for( point = txt ; *point ; point++ ) + { + if( *point == '{' ) + { + point++; + continue; + } + *buffer = *point; + *++buffer = '\0'; + } + *buffer = '\0'; + } + } + return; +} + diff -ur /proj/Mud/servers/envy2.0/src/interp.c ./envy2.0-colour/src/interp.c --- /proj/Mud/servers/envy2.0/src/interp.c Wed Dec 27 06:17:55 1995 +++ ./envy2.0-colour/src/interp.c Sun Oct 20 19:07:47 1996 @@ -148,6 +148,7 @@ { "blank", do_blank, POS_DEAD, 0, LOG_NORMAL }, { "brief", do_brief, POS_DEAD, 0, LOG_NORMAL }, { "channels", do_channels, POS_DEAD, 0, LOG_NORMAL }, + { "colour", do_colour, POS_DEAD, 0, LOG_NORMAL }, { "combine", do_combine, POS_DEAD, 0, LOG_NORMAL }, { "config", do_config, POS_DEAD, 0, LOG_NORMAL }, { "description", do_description, POS_DEAD, 0, LOG_NORMAL }, diff -ur /proj/Mud/servers/envy2.0/src/merc.h ./envy2.0-colour/src/merc.h --- /proj/Mud/servers/envy2.0/src/merc.h Wed Dec 27 06:17:56 1995 +++ ./envy2.0-colour/src/merc.h Fri Oct 25 21:42:38 1996 @@ -175,6 +175,26 @@ int sunlight; }; +/* + * Colour stuff by Lope of Loping Through The MUD + */ +#define CLEAR "[0m" /* Resets Colour */ +#define C_RED "[0;31m" /* Normal Colours */ +#define C_GREEN "[0;32m" +#define C_YELLOW "[0;33m" +#define C_BLUE "[0;34m" +#define C_MAGENTA "[0;35m" +#define C_CYAN "[0;36m" +#define C_WHITE "[0;37m" +#define C_D_GREY "[1;30m" /* Light Colors */ +#define C_B_RED "[1;31m" +#define C_B_GREEN "[1;32m" +#define C_B_YELLOW "[1;33m" +#define C_B_BLUE "[1;34m" +#define C_B_MAGENTA "[1;35m" +#define C_B_CYAN "[1;36m" +#define C_B_WHITE "[1;37m" + /* @@ -780,6 +800,7 @@ #define PLR_KILLER 8388608 #define PLR_AUTOGOLD 16777216 #define PLR_AFK 33554432 +#define PLR_COLOUR 67108864 /* * Obsolete bits. @@ -1374,6 +1395,7 @@ DECLARE_DO_FUN( do_chat ); DECLARE_DO_FUN( do_circle ); /* by Thelonius */ DECLARE_DO_FUN( do_close ); +DECLARE_DO_FUN( do_colour ); /* Colour Command By Lope */ DECLARE_DO_FUN( do_combine ); DECLARE_DO_FUN( do_commands ); DECLARE_DO_FUN( do_compare ); @@ -1844,6 +1866,12 @@ void act args( ( const char *format, CHAR_DATA *ch, const void *arg1, const void *arg2, int type ) ); +/* + * Colour stuff by Lope of Loping Through The MUD + */ +int colour args( ( char type, CHAR_DATA *ch, char *string ) ); +void colourconv args( ( char *buffer, const char *txt, CHAR_DATA *ch ) ); +void send_to_char_bw args( ( const char *txt, CHAR_DATA *ch ) ); /* db.c */ void boot_db args( ( void ) ); diff -ur /proj/Mud/servers/envy2.0/src/save.c ./envy2.0-colour/src/save.c --- /proj/Mud/servers/envy2.0/src/save.c Wed Dec 27 06:17:55 1995 +++ ./envy2.0-colour/src/save.c Thu Oct 24 20:24:09 1996 @@ -370,7 +370,7 @@ d->character = ch; ch->desc = d; ch->name = str_dup( name ); - ch->pcdata->prompt = str_dup( "<%hhp %mm %vmv> " ); + ch->pcdata->prompt = str_dup( "{c<%hhp %mm %vmv>{x " ); ch->last_note = 0; ch->act = PLR_BLANK | PLR_COMBINE @@ -722,7 +722,7 @@ if ( !ch->pcdata->pagelen ) ch->pcdata->pagelen = 20; if ( !ch->pcdata->prompt || ch->pcdata->prompt == '\0' ) - ch->pcdata->prompt = str_dup ( "<%hhp %mm %vmv> " ); + ch->pcdata->prompt = str_dup ( "{c<%hhp %mm %vmv>{x " ); /* Make sure old chars do not have pagelen > 60 - Kahn */ if ( ch->pcdata->pagelen > 60 )