diff -i smaug14/src/act_comm.c smaug18/src/act_comm.c 8c8 < * Tricops and Fireblade | * --- > * Tricops, Fireblade, Edmond, Conran | * 24,27d23 < #ifdef REGEX < #include <regex.h> < #endif < 30d25 < #include <regex.h> 35,37d29 < #ifdef REGEX < extern int re_exec _RE_ARGS( ( const char * ) ); < #endif 411,415c403,442 < if ( !IS_IMMORTAL( ch ) ) < { < send_to_char( "Peacefuls have no need to use wartalk.\n\r", ch ); < return; < } --- > send_to_char( "Peacefuls have no need to use wartalk.\n\r", ch ); > return; > } > > /* > if ( sysdata.pk_silence > && IS_PKILL( ch ) > && !IS_IMMORTAL( ch ) > && channel != CHANNEL_NEWBIE ) > { > send_to_char( "Deadlies cannot use that channel right now.\n\r", ch ); > return; > } > */ > > /* > if ( !sysdata.pk_channels > && IS_PKILL( ch ) > && !IS_IMMORTAL( ch ) > && channel != CHANNEL_NEWBIE > && channel != CHANNEL_WARTALK > && channel != CHANNEL_CLAN > && channel != CHANNEL_COUNCIL ) > { > send_to_char( "Deadlies cannot use that channel right now.\n\r", ch ); > return; > } > */ > > if ( !sysdata.pk_channels && IS_PKILL( ch ) && !IS_IMMORTAL( ch ) && channel == CHANNEL_AVTALK ) > { > send_to_char( "Deadlies cannot use that channel.\n\r", ch ); > return; > } > > > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) > { > send_to_char( "You can't do that here.\n\r", ch ); > return; 418c445 < if ( IS_SET( ch->in_room->room_flags, ROOM_SILENCE ) ) --- > if ( channel == CHANNEL_YELL && xIS_SET( ch->in_room->room_flags, ROOM_NOYELL ) ) 445c472,515 < REMOVE_BIT( ch->deaf, channel ); --- > if ( xIS_SET( ch->deaf, channel ) && ( channel != CHANNEL_WARTALK || channel != CHANNEL_YELL ) ) > { > ch_printf( ch, "You don't have the %s channel turned on. To turn it on, use the Channels command.\n\r", verb ); > return; > } > xREMOVE_BIT( ch->deaf, channel ); > > /* > * Added showing wizinvis level to imms preceding all channel talk to > * let them know that they are invis and talking on that channel as such > * -- Raltaris > */ > > if ( IS_IMMORTAL( ch ) && xIS_SET( ch->act, PLR_WIZINVIS ) ) > { > switch ( channel ) > { > default: > set_char_color( AT_GOSSIP, ch ); > ch_printf( ch, "(%d) ", ( !IS_NPC( ch ) ) ? ch->pcdata->wizinvis : ch->mobinvis ); > break; > case CHANNEL_RACETALK: > set_char_color( AT_RACETALK, ch ); > ch_printf( ch, "(%d) ", ( !IS_NPC( ch ) ) ? ch->pcdata->wizinvis : ch->mobinvis ); > break; > case CHANNEL_WARTALK: > set_char_color( AT_WARTALK, ch ); > ch_printf( ch, "(%d) ", ( !IS_NPC( ch ) ) ? ch->pcdata->wizinvis : ch->mobinvis ); > break; > case CHANNEL_TRAFFIC: > set_char_color( AT_GOSSIP, ch ); > ch_printf( ch, "(%d) ", ( !IS_NPC( ch ) ) ? ch->pcdata->wizinvis : ch->mobinvis ); > break; > case CHANNEL_IMMTALK: > set_char_color( AT_IMMORT, ch ); > ch_printf( ch, "(%d) ", ( !IS_NPC( ch ) ) ? ch->pcdata->wizinvis : ch->mobinvis ); > break; > case CHANNEL_AVTALK: > set_char_color( AT_AVATAR, ch ); > ch_printf( ch, "(%d) ", ( !IS_NPC( ch ) ) ? ch->pcdata->wizinvis : ch->mobinvis ); > break; > } > } > 453a524,528 > case CHANNEL_MUSIC: > set_char_color( AT_MUSIC, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; 470,471c545,552 < case CHANNEL_AVTALK: < sprintf( buf, "$n%c $t", channel == CHANNEL_IMMTALK ? '>' : ':' ); --- > /* set_char_color( AT_IMMORT, ch ); > ch_printf_color( ch, "&Y%s&G>&Y %s\n\r", > capitalize(ch->name), > argument ); > sprintf( buf, "&Y%s&G> &Y", capitalize(ch->name) ); > sprintf( buf3, argument );*/ > > sprintf( buf, "$n%c $t", '>' ); 476a558,594 > case CHANNEL_AVTALK: > sprintf( buf, "$n%c $t", ':' ); > position = ch->position; > ch->position = POS_STANDING; > act( AT_AVATAR, buf, ch, argument, NULL, TO_CHAR ); > ch->position = position; > break; > case CHANNEL_HIGHGOD: > set_char_color( AT_MUSE, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; > case CHANNEL_SHOUT: > set_char_color( AT_SHOUT, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; > case CHANNEL_YELL: > set_char_color( AT_YELL, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; > case CHANNEL_QUEST: > set_char_color( AT_QUEST, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; > case CHANNEL_ASK: > set_char_color( AT_ASK, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; > case CHANNEL_HIGH: > set_char_color( AT_THINK, ch ); > ch_printf( ch, "You %s '%s'\n\r", verb, argument ); > sprintf( buf, "$n %ss '$t'", verb ); > break; 479c597 < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 518c636 < if ( d->connected == CON_PLAYING && vch != ch && !IS_SET( och->deaf, channel ) ) --- > if ( d->connected == CON_PLAYING && vch != ch && !xIS_SET( och->deaf, channel ) ) 534a653,654 > if ( channel == CHANNEL_WARTALK && !IS_PKILL( och ) ) > continue; 541c661,663 < --- > if ( channel == CHANNEL_RETIRED && !IS_IMMORTAL( och ) && > ( !IS_NPC( och ) && !IS_SET( och->pcdata->flags, PCFLAG_RETIRED ) ) ) > continue; 555c677,678 < if ( IS_SET( vch->in_room->room_flags, ROOM_SILENCE ) ) --- > if ( xIS_SET( vch->in_room->room_flags, ROOM_SILENCE ) > || IS_SET( vch->in_room->area->flags, AFLAG_SILENCE ) ) 557c680,684 < if ( channel == CHANNEL_YELL && vch->in_room->area != ch->in_room->area ) --- > if ( channel == CHANNEL_YELL > && ( vch->in_room->area != ch->in_room->area > || xIS_SET( vch->in_room->room_flags, ROOM_NOYELL ) > || ( ( xIS_SET( vch->in_room->room_flags, ROOM_HOUSE ) > || xIS_SET( och->in_room->room_flags, ROOM_HOUSE ) ) && !in_same_house( ch, vch ) ) ) ) 563a691 > 565a694 > 622c751,752 < if ( channel == CHANNEL_IMMTALK || channel == CHANNEL_AVTALK ) --- > if ( channel == CHANNEL_IMMTALK ) > { 623a754,764 > > // Hrm whats this for? Do we care that much about a green > or will > // having a seperate AT_ color for avatar do the job..? :P.. -- Alty > /* set_char_color(AT_IMMORT, ch); > if ( can_see( vch, ch ) ) > ch_printf_color( vch, "&Y%s%s%s\n\r", lbuf, buf, buf3 ); > else > ch_printf_color( vch, "&YSomeone&G> &Y%s\n\r", buf3 );*/ > } > else if ( channel == CHANNEL_AVTALK ) > act( AT_AVATAR, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); 627a769,782 > else if ( channel == CHANNEL_SHOUT ) > act( AT_SHOUT, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); > else if ( channel == CHANNEL_HIGHGOD ) > act( AT_MUSE, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); > else if ( channel == CHANNEL_YELL ) > act( AT_YELL, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); > else if ( channel == CHANNEL_QUEST ) > act( AT_QUEST, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); > else if ( channel == CHANNEL_ASK ) > act( AT_ASK, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); > else if ( channel == CHANNEL_MUSIC ) > act( AT_MUSIC, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); > else if ( channel == CHANNEL_HIGH ) > act( AT_THINK, strcat( lbuf, buf ), ch, sbuf, vch, TO_VICT ); 628a784,787 > /* > ch_printf_color( vch, "&W%s", nbuf ); > ch_printf( vch, "%s", mbuf ); > */ 640c799,800 < if ( ( ch->level < 51 ) && ( channel != CHANNEL_WARTALK ) && ( channel != CHANNEL_CLAN ) ) --- > if ( ( ch->level < LEVEL_IMMORTAL ) > && ( channel != CHANNEL_YELL ) && ( channel != CHANNEL_WARTALK ) && ( channel != CHANNEL_CLAN ) ) 667a828 > || ( get_trust( vch ) < 57 && channel == CHANNEL_BUG ) 673c834 < if ( d->connected == CON_PLAYING && !IS_SET( och->deaf, channel ) && get_trust( vch ) >= level ) --- > if ( d->connected == CON_PLAYING && !xIS_SET( och->deaf, channel ) && get_trust( vch ) >= level ) 830a992,1208 > /* > * Just pop this into act_comm.c somewhere. (Or anywhere else) > * It's pretty much say except modified to take args. > * > * Written by Kratas (moon@deathmoon.com) > * Fixed up for Smaug 1.4a+ by Blodkai, 9/2000 > */ > > void do_say_to( CHAR_DATA * ch, char *argument ) > { > char arg[MAX_INPUT_LENGTH], last_char; > char buf[MAX_STRING_LENGTH]; > CHAR_DATA *vch; > CHAR_DATA *victim; > EXT_BV actflags; > int arglen; > > #ifndef SCRAMBLE > int speaking = -1, lang; > > for ( lang = 0; lang_array[lang] != LANG_UNKNOWN; lang++ ) > if ( ch->speaking & lang_array[lang] ) > { > speaking = lang; > break; > } > #endif > > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) > { > ch_printf( ch, "You can't do that here.\n\r" ); > return; > } > > argument = one_argument( argument, arg ); > > if ( arg[0] == '\0' || argument[0] == '\0' ) > { > ch_printf( ch, "What do you want to say, and to whom?\n\r" ); > return; > } > > if ( ( victim = get_char_room( ch, arg ) ) == NULL ) > { > ch_printf( ch, "They don't seem to be around.\n\r" ); > return; > } > > if ( ch == victim ) > { > ch_printf( ch, "How do I do? Nice to meet me...\n\r", ch ); > return; > } > > if ( !IS_NPC( victim ) && ( victim->switched ) && !IS_AFFECTED( victim->switched, AFF_POSSESS ) ) > { > ch_printf( ch, "That player is switched.\n\r", ch ); > return; > } > else if ( !IS_NPC( victim ) && ( !victim->desc ) ) > { > ch_printf( ch, "That player is link-dead.\n\r" ); > return; > } > > if ( !IS_NPC( victim ) && xIS_SET( victim->act, PLR_AFK ) ) > { > if ( IS_IMMORTAL( ch ) ) > ch_printf( ch, "That player is AFK, but will recieve your message.\n\r" ); > else > { > send_to_char( "That player is afk.\n\r", ch ); > return; > } > } > > if ( victim->desc && victim->desc->connected == CON_EDITING ) > { > ch_printf( ch, "That player is currently in a writing buffer.\n\r" ); > return; > } > > /* > * Stopping people from sending tells whispers etc to people on their ignore list. -Leart > */ > if ( is_ignoring( ch, victim ) ) > { > /* > * If the sender is an imm then they can bypass this check > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "You are currently ignoring %s.\n\r" > "Please type 'ignore %s' to stop ignoring them, then try sending your tell to them again.\n\r", > victim->name, victim->name ); > return; > } > } > > /* > * Check to see if target of tell is ignoring the sender > */ > if ( is_ignoring( victim, ch ) ) > { > /* > * If the sender is an imm then they cannot be ignored > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "%s is ignoring you.\n\r", victim->name ); > return; > } > else > { > set_char_color( AT_IGNORE, victim ); > ch_printf( victim, "You attempt to ignore %s, but " > "are unable to do so.\n\r", !can_see( victim, ch ) ? "Someone" : ch->name ); > } > } > > arglen = strlen( argument ) - 1; > > /* > * Remove whitespace and tabs. > */ > while ( argument[arglen] == ' ' || argument[arglen] == '\t' ) > --arglen; > last_char = argument[arglen]; > > actflags = ch->act; > > if ( IS_NPC( ch ) ) > xREMOVE_BIT( ch->act, ACT_SECRETIVE ); > > for ( vch = ch->in_room->first_person; vch; vch = vch->next_in_room ) > { > char *sbuf = argument; > > if ( vch == ch ) > continue; > > if ( is_ignoring( vch, ch ) ) > { > if ( !IS_IMMORTAL( ch ) || get_trust( vch ) > get_trust( ch ) ) > continue; > else > { > set_char_color( AT_IGNORE, vch ); > ch_printf( vch, "You attempt to ignore %s, but are unable to do so.\n\r", !can_see( vch, > ch ) ? "Someone" : ch->name ); > } > } > > #ifndef SCRAMBLE > if ( speaking != -1 && ( !IS_NPC( ch ) || ch->speaking ) ) > { > int speakswell = UMIN( knows_language( vch, ch->speaking, ch ), > knows_language( ch, ch->speaking, vch ) ); > > if ( speakswell < 75 ) > sbuf = translate( speakswell, argument, lang_names[speaking] ); > } > #else > if ( !knows_language( vch, ch->speaking, ch ) && ( !IS_NPC( ch ) || ch->speaking != 0 ) ) > sbuf = scramble( argument, ch->speaking ); > #endif > sbuf = drunk_speech( sbuf, ch ); > > MOBtrigger = FALSE; > } > > ch->act = actflags; > MOBtrigger = FALSE; > > switch ( last_char ) > { > case '?': > act( AT_SAY, "You ask $N, '$t'", ch, drunk_speech( argument, ch ), victim, TO_CHAR ); > act( AT_SAY, "$n asks $N, '$t'", ch, drunk_speech( argument, ch ), victim, TO_NOTVICT ); > act( AT_SAY, "$n asks you, '$t'", ch, drunk_speech( argument, ch ), victim, TO_VICT ); > break; > > case '!': > act( AT_SAY, "You exclaim to $N, '$t'", ch, drunk_speech( argument, ch ), victim, TO_CHAR ); > act( AT_SAY, "$n exclaims to $N, '$t'", ch, drunk_speech( argument, ch ), victim, TO_NOTVICT ); > act( AT_SAY, "$n exclaims to you, '$t'", ch, drunk_speech( argument, ch ), victim, TO_VICT ); > break; > > default: > act( AT_SAY, "You say to $N, '$t'", ch, drunk_speech( argument, ch ), victim, TO_CHAR ); > act( AT_SAY, "$n says to $N, '$t'", ch, drunk_speech( argument, ch ), victim, TO_NOTVICT ); > act( AT_SAY, "$n says to you, '$t'", ch, drunk_speech( argument, ch ), victim, TO_VICT ); > break; > } > > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) > { > sprintf( buf, "%s: %s", IS_NPC( ch ) ? ch->short_descr : ch->name, argument ); > append_to_file( LOG_FILE, buf ); > } > mprog_speech_trigger( argument, ch ); > if ( char_died( ch ) ) > return; > > /* I don't particularly want to risk this one -- Blodkai > > oprog_speech_trigger( argument, ch ); > if ( char_died(ch) ) > return; > */ > rprog_speech_trigger( argument, ch ); > return; > } > > 881a1260,1274 > void do_retiredtalk( CHAR_DATA * ch, char *argument ) > { > if ( NOT_AUTHED( ch ) || IS_NPC( ch ) ) > { > send_to_char( "Huh?\n\r", ch ); > return; > } > if ( !IS_IMMORTAL( ch ) && !IS_SET( ch->pcdata->flags, PCFLAG_RETIRED ) ) > { > send_to_char( "Huh?\n\r", ch ); > return; > } > talk_channel( ch, argument, CHANNEL_RETIRED, "retired" ); > return; > } 910c1303 < char buf[MAX_STRING_LENGTH]; --- > char buf[MAX_STRING_LENGTH], last_char; 915a1309 > int arglen; 931c1325,1334 < if ( IS_SET( ch->in_room->room_flags, ROOM_SILENCE ) ) --- > arglen = strlen( argument ) - 1; > > /* > * Remove whitespace and tabs. > */ > while ( argument[arglen] == ' ' || argument[arglen] == '\t' ) > --arglen; > last_char = argument[arglen]; > > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) 960c1363,1364 < ch_printf( vch, "You attempt to ignore %s, but" " are unable to do so.\n\r", ch->name ); --- > ch_printf( vch, "You attempt to ignore %s, but" > " are unable to do so.\n\r", !can_see( vch, ch ) ? "Someone" : ch->name ); 980c1384,1395 < act( AT_SAY, "$n says '$t'", ch, sbuf, vch, TO_VICT ); --- > switch ( last_char ) > { > case '?': > act( AT_SAY, "$n wonders '$t'", ch, sbuf, vch, TO_VICT ); > break; > case '!': > act( AT_SAY, "$n exclaims '$t'", ch, sbuf, vch, TO_VICT ); > break; > default: > act( AT_SAY, "$n says '$t'", ch, sbuf, vch, TO_VICT ); > break; > } 986,987c1401,1412 < act( AT_SAY, "You say '$T'", ch, NULL, drunk_speech( argument, ch ), TO_CHAR ); < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > switch ( last_char ) > { > case '?': > act( AT_SAY, "You ask, '$T'", ch, NULL, drunk_speech( argument, ch ), TO_CHAR ); > break; > case '!': > act( AT_SAY, "You exclaim '$T'", ch, NULL, drunk_speech( argument, ch ), TO_CHAR ); > break; > default: > act( AT_SAY, "You say '$T'", ch, NULL, drunk_speech( argument, ch ), TO_CHAR ); > } > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 1021c1446,1452 < REMOVE_BIT( ch->deaf, CHANNEL_WHISPER ); --- > xREMOVE_BIT( ch->deaf, CHANNEL_WHISPER ); > > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) > { > send_to_char( "You can't do that here.\n\r", ch ); > return; > } 1059c1490 < if ( IS_SET( victim->deaf, CHANNEL_WHISPER ) --- > if ( xIS_SET( victim->deaf, CHANNEL_WHISPER ) 1076a1508,1525 > * Stopping people from sending tells whispers etc to people on their ignore list. -Leart > */ > if ( is_ignoring( ch, victim ) ) > { > /* > * If the sender is an imm then they can bypass this check > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "You are currently ignoring %s.\n\r" > "Please type 'ignore %s' to stop ignoring them, then try whispering to them again.\n\r", > victim->name, victim->name ); > return; > } > } > > /* 1093c1542,1543 < ch_printf( victim, "You attempt to ignore %s, but " "are unable to do so.\n\r", ch->name ); --- > ch_printf( victim, "You attempt to ignore %s, but " > "are unable to do so.\n\r", !can_see( victim, ch ) ? "Someone" : ch->name ); 1096a1547 > MOBtrigger = FALSE; 1121c1572,1574 < if ( !IS_SET( ch->in_room->room_flags, ROOM_SILENCE ) ) --- > MOBtrigger = TRUE; > if ( !xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) && !IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) > { 1122a1576 > } 1125c1579 < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 1132c1586 < mprog_speech_trigger( argument, ch ); --- > mprog_tell_trigger( argument, ch ); 1135a1590,1653 > > void do_beckon( CHAR_DATA * ch, char *argument ) > { > char arg[MAX_INPUT_LENGTH]; > CHAR_DATA *victim; > > if ( IS_NPC( ch ) ) > return; > > argument = one_argument( argument, arg ); > > set_char_color( AT_ACTION, ch ); > > if ( IS_SET( ch->pcdata->flags, PCFLAG_NOBECKON ) ) > { > ch_printf( ch, "The gods forbid you this action.\n\r" ); > return; > } > > if ( !*arg || !( victim = get_char_world( ch, arg ) ) ) > { > ch_printf( ch, "Who do you wish to beckon?\n\r" ); > return; > } > > if ( IS_NPC( victim ) ) > { > ch_printf( ch, "Who do you wish to beckon?\n\r" ); > return; > } > > if ( victim == ch ) > { > ch_printf( ch, "Lonely?\n\r\a" ); > return; > } > > if ( NOT_AUTHED( victim ) && !IS_IMMORTAL( ch ) ) > { > ch_printf( ch, "They are not yet authorized.\n\r" ); > return; > } > > if ( !IS_SET( victim->pcdata->flags, PCFLAG_BECKON ) && !IS_IMMORTAL( ch ) ) > { > ch_printf( ch, "%s is deaf to beckoning.\n\r", victim->name ); > return; > } > > if ( is_ignoring( victim, ch ) && !IS_IMMORTAL( ch ) ) > { > ch_printf( ch, "%s is ignoring you.\n\r", victim->name ); > return; > } > > if ( !IS_IMMORTAL( ch ) ) > WAIT_STATE( ch, 1 * PULSE_VIOLENCE ); > set_char_color( AT_ACTION, victim ); > ch_printf( ch, "You beckon to %s...\n\r", PERS( victim, ch ) ); > ch_printf( victim, "%s beckons you...\n\r\a", capitalize( PERS( ch, victim ) ) ); > return; > } > > 1155,1156c1673,1674 < REMOVE_BIT( ch->deaf, CHANNEL_TELLS ); < if ( IS_SET( ch->in_room->room_flags, ROOM_SILENCE ) ) --- > xREMOVE_BIT( ch->deaf, CHANNEL_TELLS ); > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) 1214,1215c1732,1738 < send_to_char( "That player is afk.\n\r", ch ); < return; --- > if ( IS_IMMORTAL( ch ) ) > send_to_char( "That player is AFK, but will receive your message.\n\r", ch ); > else > { > send_to_char( "That player is afk.\n\r", ch ); > return; > } 1218c1741 < if ( IS_SET( victim->deaf, CHANNEL_TELLS ) && ( !IS_IMMORTAL( ch ) || ( get_trust( ch ) < get_trust( victim ) ) ) ) --- > if ( xIS_SET( victim->deaf, CHANNEL_TELLS ) && ( !IS_IMMORTAL( ch ) || ( get_trust( ch ) < get_trust( victim ) ) ) ) 1233c1756,1758 < if ( !IS_NPC( victim ) && IS_SET( victim->in_room->room_flags, ROOM_SILENCE ) ) --- > if ( !IS_NPC( victim ) > && ( xIS_SET( victim->in_room->room_flags, ROOM_SILENCE ) > || IS_SET( victim->in_room->area->flags, AFLAG_SILENCE ) ) ) 1235,1236c1760,1766 < act( AT_PLAIN, "A magic force prevents your message from being heard.", ch, 0, victim, TO_CHAR ); < return; --- > if ( IS_IMMORTAL( ch ) ) > send_to_char( "That player is in a silent room, but will receive your message.\n\r", ch ); > else > { > act( AT_PLAIN, "A magical force prevents your message from being heard.", ch, 0, victim, TO_CHAR ); > return; > } 1247a1778,1795 > * Stopping people from sending tells whispers etc to people on their ignore list. -Leart > */ > if ( is_ignoring( ch, victim ) ) > { > /* > * If the sender is an imm then they can bypass this check > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "You are currently ignoring %s.\n\r" > "Please type 'ignore %s' to stop ignoring them, then try sending your tell to them again.\n\r", > victim->name, victim->name ); > return; > } > } > > /* 1264c1812,1813 < ch_printf( victim, "You attempt to ignore %s, but " "are unable to do so.\n\r", ch->name ); --- > ch_printf( victim, "You attempt to ignore %s, but " > "are unable to do so.\n\r", !can_see( victim, ch ) ? "Someone" : ch->name ); 1294c1843 < --- > MOBtrigger = FALSE; 1297a1847 > MOBtrigger = FALSE; 1311a1862 > MOBtrigger = TRUE; 1314c1865 < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 1322c1873 < mprog_speech_trigger( argument, ch ); --- > mprog_tell_trigger( argument, ch ); 1346,1347c1897,1898 < REMOVE_BIT( ch->deaf, CHANNEL_TELLS ); < if ( IS_SET( ch->in_room->room_flags, ROOM_SILENCE ) ) --- > xREMOVE_BIT( ch->deaf, CHANNEL_TELLS ); > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) 1382c1933 < if ( IS_SET( victim->deaf, CHANNEL_TELLS ) && ( !IS_IMMORTAL( ch ) || ( get_trust( ch ) < get_trust( victim ) ) ) ) --- > if ( xIS_SET( victim->deaf, CHANNEL_TELLS ) && ( !IS_IMMORTAL( ch ) || ( get_trust( ch ) < get_trust( victim ) ) ) ) 1388,1389c1939,1943 < if ( ( !IS_IMMORTAL( ch ) && !IS_AWAKE( victim ) ) < || ( !IS_NPC( victim ) && IS_SET( victim->in_room->room_flags, ROOM_SILENCE ) ) ) --- > if ( ( !IS_IMMORTAL( ch ) > && !IS_AWAKE( victim ) ) > || ( !IS_NPC( victim ) > && xIS_SET( victim->in_room->room_flags, ROOM_SILENCE ) ) > || ( !IS_NPC( victim ) && IS_SET( victim->in_room->area->flags, AFLAG_SILENCE ) ) ) 1403a1958,1975 > * Stopping people from sending tells whispers etc to people on their ignore list. -Leart > */ > if ( is_ignoring( ch, victim ) ) > { > /* > * If the sender is an imm then they can bypass this check > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "You are currently ignoring %s.\n\r" > "Please type 'ignore %s' to stop ignoring them, then try sending your reply to them again.\n\r", > victim->name, victim->name ); > return; > } > } > > /* 1420c1992,1993 < ch_printf( victim, "You attempt to ignore %s, but " "are unable to do so.\n\r", ch->name ); --- > ch_printf( victim, "You attempt to ignore %s, but " > "are unable to do so.\n\r", !can_see( victim, ch ) ? "Someone" : ch->name ); 1423a1997 > MOBtrigger = FALSE; 1426a2001 > MOBtrigger = FALSE; 1450c2025,2026 < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > MOBtrigger = TRUE; > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 1479a2056 > mprog_tell_trigger( argument, ch ); 1500,1501c2077,2078 < REMOVE_BIT( ch->deaf, CHANNEL_TELLS ); < if ( IS_SET( ch->in_room->room_flags, ROOM_SILENCE ) ) --- > xREMOVE_BIT( ch->deaf, CHANNEL_TELLS ); > if ( xIS_SET( ch->in_room->room_flags, ROOM_SILENCE ) || IS_SET( ch->in_room->area->flags, AFLAG_SILENCE ) ) 1549c2126 < if ( IS_SET( victim->deaf, CHANNEL_TELLS ) && ( !IS_IMMORTAL( ch ) || ( get_trust( ch ) < get_trust( victim ) ) ) ) --- > if ( xIS_SET( victim->deaf, CHANNEL_TELLS ) && ( !IS_IMMORTAL( ch ) || ( get_trust( ch ) < get_trust( victim ) ) ) ) 1558,1559c2135,2139 < if ( ( !IS_IMMORTAL( ch ) && !IS_AWAKE( victim ) ) || < ( !IS_NPC( victim ) && IS_SET( victim->in_room->room_flags, ROOM_SILENCE ) ) ) --- > if ( ( !IS_IMMORTAL( ch ) > && !IS_AWAKE( victim ) ) > || ( !IS_NPC( victim ) > && xIS_SET( victim->in_room->room_flags, ROOM_SILENCE ) ) > || ( !IS_NPC( victim ) && IS_SET( victim->in_room->area->flags, AFLAG_SILENCE ) ) ) 1572a2153,2170 > * Stopping people from sending tells whispers etc to people on their ignore list. -Leart > */ > if ( is_ignoring( ch, victim ) ) > { > /* > * If the sender is an imm then they can bypass this check > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "You are currently ignoring %s.\n\r" > "Please type 'ignore %s' to stop ignoring them, then try sending your retell to them again.\n\r", > victim->name, victim->name ); > return; > } > } > > /* 1589c2187,2188 < ch_printf( victim, "You attempy to ignore %s, but " "are unable to do so.\n\r", ch->name ); --- > ch_printf( victim, "You attempt to ignore %s, but " > "are unable to do so.\n\r", !can_see( victim, ch ) ? "Someone" : ch->name ); 1620a2220 > MOBtrigger = FALSE; 1623a2224 > MOBtrigger = FALSE; 1650c2251,2252 < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > MOBtrigger = TRUE; > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 1658c2260 < mprog_speech_trigger( argument, ch ); --- > mprog_tell_trigger( argument, ch ); 1689c2291,2294 < ch_printf( ch, ch->pcdata->tell_history[index] ); --- > /* > * Caught by Robert Haas, Smaug mailing list > */ > send_to_char( ch->pcdata->tell_history[index], ch ); 1756c2361,2362 < ch_printf( vch, "You attempt to ignore %s, but" " are unable to do so.\n\r", ch->name ); --- > ch_printf( vch, "You attempt to ignore %s, but" > " are unable to do so.\n\r", !can_see( vch, ch ) ? "Someone" : ch->name ); 1773c2379,2382 < act( AT_ACTION, "$n $t", ch, sbuf, vch, ( vch == ch ? TO_CHAR : TO_VICT ) ); --- > if ( argument[0] == '\'' || argument[0] == '-' || argument[0] == ',' ) > act( AT_ACTION, "$n$t", ch, sbuf, vch, ( vch == ch ? TO_CHAR : TO_VICT ) ); > else > act( AT_ACTION, "$n $t", ch, sbuf, vch, ( vch == ch ? TO_CHAR : TO_VICT ) ); 1780c2389 < if ( IS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_LOGSPEECH ) ) 1782c2391,2394 < sprintf( buf, "%s %s (emote)", IS_NPC( ch ) ? ch->short_descr : ch->name, argument ); --- > if ( argument[0] == '\'' || argument[0] == '-' || argument[0] == ',' ) > sprintf( buf, "%s%s (emote)", IS_NPC( ch ) ? ch->short_descr : ch->name, argument ); > else > sprintf( buf, "%s %s (emote)", IS_NPC( ch ) ? ch->short_descr : ch->name, argument ); 1792a2405,2406 > char arg[MAX_INPUT_LENGTH]; > char *p; 1799a2414,2449 > > p = one_argument( argument, arg ); > if ( !str_cmp( arg, "clear" ) && get_trust( ch ) >= LEVEL_ASCENDANT ) > { > p = one_argument( p, arg ); > if ( str_cmp( arg, "now" ) ) > send_to_char( "Must specify 'clear now' to clear bug file.\n\r", ch ); > else > { > FILE *fp = fopen( PBUG_FILE, "w" ); > > if ( fp ) > fclose( fp ); > send_to_char( "Bug file cleared.\n\r", ch ); > return; > } > } > > if ( !str_cmp( arg, "list" ) && > ( get_trust( ch ) >= LEVEL_ASCENDANT || is_name( "bug", ch->pcdata->bestowments ) ) ) > { > int lo = -1, hi = -1; > > p = one_argument( p, arg ); > if ( is_number( arg ) ) > { > lo = atoi( arg ); > p = one_argument( p, arg ); > if ( is_number( arg ) ) > hi = atoi( arg ); > } > send_to_pager( "\n\r VNUM \n\r.......\n\r", ch ); > show_file_vnum( ch, PBUG_FILE, lo, hi ); > return; > } > 1815a2466,2468 > char arg[MAX_INPUT_LENGTH]; > char *p; > 1821a2475,2509 > p = one_argument( argument, arg ); > if ( !str_cmp( arg, "clear" ) && get_trust( ch ) >= LEVEL_ASCENDANT ) > { > p = one_argument( p, arg ); > if ( str_cmp( arg, "now" ) ) > send_to_char( "Must specify 'clear now' to clear idea file.\n\r", ch ); > else > { > FILE *fp = fopen( IDEA_FILE, "w" ); > > if ( fp ) > fclose( fp ); > send_to_char( "Idea file cleared.\n\r", ch ); > return; > } > } > > if ( !str_cmp( arg, "list" ) && > ( get_trust( ch ) >= LEVEL_ASCENDANT || is_name( "idea", ch->pcdata->bestowments ) ) ) > { > int lo = -1, hi = -1; > > p = one_argument( p, arg ); > if ( is_number( arg ) ) > { > lo = atoi( arg ); > p = one_argument( p, arg ); > if ( is_number( arg ) ) > hi = atoi( arg ); > } > send_to_pager( "\n\r VNUM \n\r.......\n\r", ch ); > show_file_vnum( ch, IDEA_FILE, lo, hi ); > return; > } > 1826a2515,2581 > void do_hintsubmit( CHAR_DATA * ch, char *argument ) > { > char arg[MAX_INPUT_LENGTH]; > char *p; > > if ( IS_NPC( ch ) ) > { > send_to_char( "Huh?\n\r", ch ); > return; > } > set_char_color( AT_PLAIN, ch ); > if ( argument[0] == '\0' ) > { > send_to_char( "\n\rUsage: 'hintsubmit <message>'\n\r", ch ); > if ( get_trust( ch ) >= LEVEL_DEMI ) > send_to_char( "Usage: 'hintsubmit list' or 'hintsubmit clear now'\n\r", ch ); > return; > } > p = one_argument( argument, arg ); > if ( !str_cmp( arg, "clear" ) && get_trust( ch ) >= LEVEL_DEMI ) > { > p = one_argument( p, arg ); > if ( str_cmp( arg, "now" ) ) > send_to_char( "Must specify 'clear now' to clear hint submission file.\n\r", ch ); > else > { > FILE *fp = fopen( HINTSUB_FILE, "w" ); > > if ( fp ) > fclose( fp ); > send_to_char( "Hint submission file cleared.\n\r", ch ); > return; > } > } > > if ( !str_cmp( arg, "list" ) && > ( get_trust( ch ) >= LEVEL_DEMI || is_name( "hintsubmit", ch->pcdata->bestowments ) ) ) > { > int lo = -1, hi = -1; > > p = one_argument( p, arg ); > if ( is_number( arg ) ) > { > lo = atoi( arg ); > p = one_argument( p, arg ); > if ( is_number( arg ) ) > hi = atoi( arg ); > } > send_to_pager( "\n\r VNUM \n\r.......\n\r", ch ); > show_file_vnum( ch, HINTSUB_FILE, lo, hi ); > return; > } > > append_file( ch, HINTSUB_FILE, argument ); > send_to_char( "Thanks, your hint submission has been recorded.\n\r", ch ); > return; > } > > void do_typ( CHAR_DATA * ch, char *argument ) > { > set_char_color( AT_PLAIN, ch ); > send_to_char( "\n\rIf you want to submit a typo, type 'typo <message>'.\n\r", ch ); > send_to_char( "If you want to change styles, type 'style <style name>'.\n\r", ch ); > return; > } > > 1828a2584,2586 > char arg[MAX_INPUT_LENGTH]; > char *p; > 1837c2595,2596 < if ( !str_cmp( argument, "clear now" ) && get_trust( ch ) >= LEVEL_ASCENDANT ) --- > p = one_argument( argument, arg ); > if ( !str_cmp( arg, "clear" ) && get_trust( ch ) >= LEVEL_ASCENDANT ) 1839c2598,2603 < FILE *fp = fopen( TYPO_FILE, "w" ); --- > p = one_argument( p, arg ); > if ( str_cmp( arg, "now" ) ) > send_to_char( "Must specify 'clear now' to clear the typo file.\n\r", ch ); > else > { > FILE *fp = fopen( TYPO_FILE, "w" ); 1841,1849c2605,2609 < if ( fp ) < fclose( fp ); < send_to_char( "Typo file cleared.\n\r", ch ); < return; < } < if ( !str_cmp( argument, "list" ) && get_trust( ch ) >= LEVEL_ASCENDANT ) < { < send_to_char( "\n\r VNUM \n\r.......\n\r", ch ); < show_file( ch, TYPO_FILE ); --- > if ( fp ) > fclose( fp ); > send_to_char( "Typo file cleared.\n\r", ch ); > return; > } 1851c2611,2613 < else --- > > if ( !str_cmp( arg, "list" ) && > ( get_trust( ch ) >= LEVEL_ASCENDANT || is_name( "typo", ch->pcdata->bestowments ) ) ) 1853,1854c2615,2627 < append_file( ch, TYPO_FILE, argument ); < send_to_char( "Thanks, your typo notice has been recorded.\n\r", ch ); --- > int lo = -1, hi = -1; > > p = one_argument( p, arg ); > if ( is_number( arg ) ) > { > lo = atoi( arg ); > p = one_argument( p, arg ); > if ( is_number( arg ) ) > hi = atoi( arg ); > } > send_to_pager( "\n\r VNUM \n\r.......\n\r", ch ); > show_file_vnum( ch, TYPO_FILE, lo, hi ); > return; 1855a2629,2631 > > append_file( ch, TYPO_FILE, argument ); > send_to_char( "Thanks, your typo notice has been recorded.\n\r", ch ); 1915a2692,2697 > if ( !IS_IMMORTAL( ch ) && xIS_SET( ch->in_room->room_flags, ROOM_NOQUIT ) ) > { > send_to_char_color( "You cannot QUIT here.\n\r", ch ); > return; > } > 1927,1929c2709,2714 < send_to_char < ( "Your surroundings begin to fade as a mystical swirling vortex of colors\n\renvelops your body... When you come to, things are not as they were.\n\r\n\r", < ch ); --- > if ( class_table[ch->class]->logout ) > ch_printf( ch, "%s\n\r", class_table[ch->class]->logout ); > else > send_to_char > ( "Your surroundings begin to fade as a mystical swirling vortex of colors\n\renvelops your body... When you come to, things are not as they were.\n\r\n\r", > ch ); 1931c2716,2719 < act( AT_BYE, "$n has left the game.", ch, NULL, NULL, TO_CANSEE ); --- > if ( class_table[ch->class]->logout_other ) > act( AT_BYE, class_table[ch->class]->logout_other, ch, NULL, NULL, TO_CANSEE ); > else > act( AT_BYE, "$n has left the game.", ch, NULL, NULL, TO_CANSEE ); 1934c2722 < sprintf( log_buf, "%s has quit (Room %d).", ch->name, ( ch->in_room ? ch->in_room->vnum : -1 ) ); --- > sprintf( log_buf, "%s has quit. (INRoom %d)", ch->name, ( ch->in_room ? ch->in_room->vnum : -1 ) ); 1935a2724,2726 > update_member( ch ); > if ( ch->level >= 50 && !ch->pcdata->pet ) /* Pet crash fix */ > xREMOVE_BIT( ch->act, PLR_BOUGHT_PET ); 1947a2739 > { 1948a2741 > } 2192c2985 < void do_ansi( CHAR_DATA * ch, char *argument ) --- > void do_hints( CHAR_DATA * ch, char *argument ) 2195a2989,2994 > if ( IS_NPC( ch ) ) > { > send_to_char( "Huh?\n\r", ch ); > return; > } > 2200c2999,3022 < send_to_char( "ANSI ON or OFF?\n\r", ch ); --- > if ( IS_SET( ch->pcdata->flags, PCFLAG_HINTS ) ) > { > REMOVE_BIT( ch->pcdata->flags, PCFLAG_HINTS ); > send_to_char_color( "&CHints are now disabled.\n\r", ch ); > return; > } > else > { > SET_BIT( ch->pcdata->flags, PCFLAG_HINTS ); > send_to_char_color( "&CHints are now enabled.\n\r", ch ); > return; > } > } > if ( ( strcmp( arg, "on" ) == 0 ) || ( strcmp( arg, "ON" ) == 0 ) ) > { > SET_BIT( ch->pcdata->flags, PCFLAG_HINTS ); > send_to_char_color( "&CHints are now enabled.\n\r", ch ); > return; > } > > if ( ( strcmp( arg, "off" ) == 0 ) || ( strcmp( arg, "OFF" ) == 0 ) ) > { > REMOVE_BIT( ch->pcdata->flags, PCFLAG_HINTS ); > send_to_char_color( "&CHints are now disabled.\n\r", ch ); 2202a3025,3047 > } > > void do_ansi( CHAR_DATA * ch, char *argument ) > { > char arg[MAX_INPUT_LENGTH]; > > one_argument( argument, arg ); > > if ( arg[0] == '\0' ) > { > if ( xIS_SET( ch->act, PLR_ANSI ) ) > { > xREMOVE_BIT( ch->act, PLR_ANSI ); > send_to_char( "ANSI color is now OFF.\n\r", ch ); > return; > } > else > { > xSET_BIT( ch->act, PLR_ANSI ); > send_to_char_color( "&GANSI color is now &YON&G!\n\r", ch ); > return; > } > } 2206,2207c3051 < set_char_color( AT_WHITE + AT_BLINK, ch ); < send_to_char( "ANSI ON!!!\n\r", ch ); --- > send_to_char_color( "&GANSI color is now &YON&G!\n\r", ch ); 2210d3053 < 2214c3057 < send_to_char( "Okay... ANSI support is now off\n\r", ch ); --- > send_to_char( "ANSI color is now OFF.\n\r", ch ); 2223,2227c3066 < if ( ch->level < 2 ) < { < send_to_char_color( "&BYou must be at least second level to save.\n\r", ch ); < return; < } --- > 2289a3129,3200 > void do_lead( CHAR_DATA * ch, char *argument ) > { > char arg[MAX_INPUT_LENGTH]; > CHAR_DATA *victim, *gch; > > one_argument( argument, arg ); > > if ( IS_NPC( ch ) ) > return; > > if ( !ch->pcdata->council ) > { > ch_printf( ch, "Huh?" ); > return; > } > > if ( str_cmp( ch->pcdata->council->name, "Newbie Council" ) ) > { > ch_printf( ch, "Huh?\n\r" ); > return; > } > > set_char_color( AT_LBLUE, ch ); > > if ( arg[0] == '\0' ) > { > ch_printf( ch, "Who do you want to lead?\n\r" ); > return; > } > > if ( ( victim = get_char_room( ch, arg ) ) == NULL ) > { > ch_printf( ch, "They aren't here.\n\r" ); > return; > } > > if ( IS_NPC( victim ) ) > { > ch_printf( ch, "You cannot lead mobiles.\n\r" ); > return; > } > > if ( victim == ch ) > { > for ( gch = first_char; gch; gch = gch->next ) > if ( gch->master == ch && gch != ch ) > stop_follower( gch ); > return; > } > > /* > if ( victim->master && victim->master == ch ) > { > stop_follower( victim ); > return; > } > */ > > if ( victim->level > 25 ) > { > ch_printf( ch, "You cannot lead characters over level 25.\n\r", ch ); > return; > } > > if ( victim->master ) > stop_follower( victim ); > ch_printf( victim, "%s beckons to you...\n\r", ch->name ); > add_follower( victim, ch ); > return; > } > > 2339a3251,3267 > /* > * Check to see if the victim a player is trying to follow is ignoring them. > * If so, they aren't permitted to follow. -Leart > */ > if ( is_ignoring( victim, ch ) ) > { > /* > * If the person trying to follow is an imm, then they can still follow > */ > if ( !IS_IMMORTAL( ch ) || get_trust( victim ) > get_trust( ch ) ) > { > set_char_color( AT_IGNORE, ch ); > ch_printf( ch, "%s is ignoring you.\n\r", victim->name ); > return; > } > } > 2377a3306,3311 > > /* > char buf[MAX_STRING_LENGTH]; > CHAR_DATA *victim; > */ > 2383a3318,3327 > /* > sprintf( buf, "%s", ch->master->name ); > > if ( ( victim = get_char_world( ch, buf ) ) == NULL ) > { > bug( "Stop_follower: ch->master fails get_char_world. (%s)", ch ); > return; > } > */ > 2446a3391,3396 > if ( get_timer( ch, TIMER_PKILLED ) > 0 ) > { > send_to_char( "You have been killed in the past five minutes.\n\r", ch ); > return; > } > 2533c3483 < PERS( leader, ch ), ch->level < 50 ? " [to lvl]" : "" ); --- > PERS( leader, ch ), ch->level < LEVEL_AVATAR ? " [to lvl]" : "" ); 2614c3564 < if ( gch->level < 50 ) --- > if ( gch->level < LEVEL_AVATAR ) 2661a3612 > && !is_same_group( rch, ch ) 2665c3616 < && abs( ch->level - rch->level ) < 9 && !is_same_group( rch, ch ) && IS_PKILL( ch ) == IS_PKILL( rch ) ) --- > && ( ( abs( ch->level - rch->level ) < 9 && IS_PKILL( ch ) == IS_PKILL( rch ) ) || IS_IMMORTAL( ch ) ) ) 2715c3666,3667 < if ( ch->level - victim->level < -8 || ch->level - victim->level > 8 || ( IS_PKILL( ch ) != IS_PKILL( victim ) ) ) --- > if ( ( ch->level - victim->level < -8 > || ch->level - victim->level > 8 || ( IS_PKILL( ch ) != IS_PKILL( victim ) ) ) && !IS_IMMORTAL( ch ) ) 2850c3802 < /* sprintf( buf, "%s tells the group '%s'.\n\r", ch->name, argument );*/ --- > /* sprintf( buf, "%s tells the group '%s'\n\r", ch->name, argument );*/ 2867c3819 < ch_printf( gch, "%s tells the group '%s'.\n\r", ch->name, translate( speakswell, argument, --- > ch_printf( gch, "%s tells the group '%s'\n\r", ch->name, translate( speakswell, argument, 2870c3822 < ch_printf( gch, "%s tells the group '%s'.\n\r", ch->name, argument ); --- > ch_printf( gch, "%s tells the group '%s'\n\r", ch->name, argument ); 2873c3825 < ch_printf( gch, "%s tells the group '%s'.\n\r", ch->name, argument ); --- > ch_printf( gch, "%s tells the group '%s'\n\r", ch->name, argument ); 2876c3828 < ch_printf( gch, "%s tells the group '%s'.\n\r", ch->name, argument ); --- > ch_printf( gch, "%s tells the group '%s'\n\r", ch->name, argument ); 2878c3830 < ch_printf( gch, "%s tells the group '%s'.\n\r", ch->name, scramble( argument, ch->speaking ) ); --- > ch_printf( gch, "%s tells the group '%s'\n\r", ch->name, scramble( argument, ch->speaking ) ); 2918,2919c3870,3872 < if ( ( d->connected == CON_PLAYING ) && !IS_SET( original->deaf, CHANNEL_AUCTION ) < && !IS_SET( original->in_room->room_flags, ROOM_SILENCE ) && !NOT_AUTHED( original ) ) --- > if ( ( d->connected == CON_PLAYING ) && !xIS_SET( original->deaf, CHANNEL_AUCTION ) > && get_trust( original ) >= 5 && ( !xIS_SET( original->in_room->room_flags, ROOM_SILENCE ) > || !IS_SET( original->in_room->area->flags, AFLAG_SILENCE ) ) && !NOT_AUTHED( original ) ) 2935a3889,3890 > return 100; > 2953a3909,3910 > if ( IS_IMMORTAL( ch ) ) > return 100; 3016c3973 < LANG_CLAN, LANG_GITH, LANG_UNKNOWN --- > LANG_CLAN, LANG_GITH, LANG_GNOME, LANG_UNKNOWN 3024c3981 < "halfling", "clan", "gith", "" --- > "halfling", "clan", "gith", "gnomish", ""