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 )