In act_comm.c In the declarations at the top add the declaration: char *act_string(const char *format, CHAR_DATA *to, CHAR_DATA *ch, const void *arg1, const void *arg2, int flags); in void talk_channel: declare bool supress=FALSE; after if ( argument[0] == '\0' ) { sprintf( buf, "%s what?\n\r", verb ); buf[0] = UPPER(buf[0]); send_to_char( buf, ch ); /* where'd this line go? */ return; } Add: if ( argument[0] == '@' ) { SOCIALTYPE *social; char cmd[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char buf3[MAX_STRING_LENGTH]; CHAR_DATA *victim; argument++; argument=one_argument(argument,cmd); if ( (social=find_social(cmd)) == NULL ) { ch_printf(ch,"Couldn't find social %s\n\r",cmd); return; } supress = TRUE; argument=one_argument(argument,cmd); if ( ( victim = get_char_world( ch, cmd ) ) == NULL && social->others_no_arg) { strcpy(buf2,(char *) act_string( social->others_no_arg, ch, ch, NULL, victim,0)); buf2[strlen(buf2) - 2]=0; sprintf( buf3, "&c%s", buf2); if (social->char_no_arg) { strcpy(buf2,(char *) act_string( social->char_no_arg, ch, ch, NULL, victim,0)); buf2[strlen(buf2) - 2]=0; ch_printf( ch, "&c%s&W (%s)\n\r", buf2, verb); } } else if(victim==ch && social->others_auto) { strcpy(buf2,(char *) act_string( social->others_auto, ch, ch, NULL, victim,0)); buf2[strlen(buf2) - 2]=0; sprintf( buf3, "&c%s", buf2); if (social->char_auto) { strcpy(buf2,(char *) act_string( social->char_auto, ch, ch, NULL, victim,0)); buf2[strlen(buf2) - 2]=0; ch_printf( ch, "&c%s&W (%s)\n\r", buf2, verb); } } else if(victim && social->others_found) { strcpy(buf2,(char *) act_string( social->others_found, ch, ch, NULL, victim,0)); buf2[strlen(buf2) - 2]=0; sprintf( buf3, "&c%s", buf2); if (social->char_found) { strcpy(buf2,(char *) act_string( social->char_found, ch, ch, NULL, victim,0)); buf2[strlen(buf2) - 2]=0; ch_printf( ch, "&c%s&W (%s)\n\r", buf2, verb); } } else { ch_printf(ch,"Couldn't perform social %s on %s\n\r", social->name, cmd ); return; } if(buf3[0] != '\0') argument = buf3; } Just before: switch ( channel ) add: if (supress) sprintf( buf, "&c*$t&c*&W (%s)", verb); else And further down replace: if ( speakswell < 85 ) sbuf = translate(speakswell, argument, lang_names[speaking]); with if ( speakswell < 85 && !supress) // Socials always clear, they're actions not words. sbuf = translate(speakswell, argument, lang_names[speaking]);