#include "ctype.h" #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include "define.h" #include "struct.h" const char* He_She [] = { "it", "he", "she" }; const char* Him_Her [] = { "it", "him", "her" }; const char* His_Her [] = { "its", "his", "her" }; const char* scroll_line[] = { "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\ =-=-=-=-\n\r", ">>>>==--------====--<>--====--------==<<<<\n\r", "+=-------------------------------------------------------------------\ -------=+\n\r" }; /* * LOW LEVEL ROUTINES */ void send( link_data* link, const char* message ) { text_data* text; if( link != NULL ) { text = new text_data( message ); append( link->send, text ); if( link->snoop_by != NULL ) send( link->snoop_by, message ); } return; } /* * ACCEPT MESSAGE? */ bool Player_Data :: Accept_Msg( char_data* ch ) { if( msg_type == MSG_STANDARD ) return TRUE; int level = level_setting( &pcdata->mess_settings, msg_type ); if( level == 3 ) return TRUE; if( level == 0 ) return FALSE; if( Befriended( ch ) ) return TRUE; if( level == 1 ) return FALSE; return is_same_group( this, ch ); } bool Mob_Data :: Accept_Msg( char_data* ) { return FALSE; } /* * PAGER ROUTINES */ void page( char_data* ch, const char* txt ) { char tmp [ MAX_STRING_LENGTH ]; text_data* send; link_data* link; char* line; if( ch == NULL || ( link = ch->link ) == NULL ) return; for( ; ; ) { for( line = tmp; *txt != '\n' && *txt != '\0'; ) *(line++) = *(txt++); if( *txt != '\0' ) { *(line++) = '\n'; *(line++) = '\r'; } *line = '\0'; if( *txt == '\n' ) if( *(++txt) == '\r' ) txt++; if( *tmp == '\0' ) break; send = new text_data( tmp ); append( link->paged, send ); } return; } void fpage( char_data* ch, const char *text ) { char buf [ MAX_STRING_LENGTH ]; if( ch == NULL || ch->link == NULL ) return; format( buf, text ); strcat( buf, "\n\r" ); corrupt( buf, MAX_STRING_LENGTH, "Fpage" ); page( ch, buf ); } void clear_pager( char_data* ch ) { if( ch->link == NULL || ch->link->paged == NULL ) return; delete_list( ch->link->paged ); return; } void next_page( link_data* link ) { text_data* next; text_data* send; char* letter; int lines = 0; if( link == NULL || ( send = link->paged ) == NULL ) return; for( ; send->next != NULL; send = send->next ) { for( letter = send->message.text; *letter != '\0'; letter++ ) if( *letter == '\r' ) lines++; if( lines > link->character->pcdata->lines-6 ) break; } next = send->next; send->next = link->send; link->send = link->paged; link->paged = next; return; } void page_centered( char_data* ch, const char* text ) { char tmp1 [ TWO_LINES ]; char tmp2 [ TWO_LINES ]; if( strlen( text ) > 80 ) { bug( "Page_Centered: Text > 80 Characters." ); bug( text ); return; } sprintf( tmp1, "%%%ds%%s\n\r", 40-strlen( text )/2 ); sprintf( tmp2, tmp1, "", text ); page( ch, tmp2 ); return; } void page_underlined( char_data* ch, const char* text ) { char tmp [ TWO_LINES ]; int i; page( ch, text ); for( i = 0; i < strlen( text ); i++ ) if( text[i] == ' ' || text[i] == '\n' || text[i] == '\r' ) tmp[i] = text[i]; else tmp[i] = '-'; tmp[i] = '\0'; page( ch, tmp ); } /* * SEND_TO_AREA */ void send_to_area( const char* string, area_data* area ) { char_data *rch; room_data *room; for( room = area->room_first; room != NULL; room = room->next ) for( int i = 0; i < room->contents; i++ ) if( ( rch = character( room->contents[i] ) ) != NULL && rch->link != NULL ) send( rch, string ); return; } /* * FORMATTED SEND */ void fsend( char_data* ch, const char *text ) { char buf [ MAX_STRING_LENGTH ]; if( ch == NULL || ch->link == NULL ) return; format( buf, text ); strcat( buf, "\n\r" ); corrupt( buf, MAX_STRING_LENGTH, "Fsend" ); send( ch->link, buf ); return; } void send_centered( char_data* ch, const char* text ) { char tmp1 [ TWO_LINES ]; char tmp2 [ TWO_LINES ]; if( strlen( text ) > 80 ) { bug( "Send_Centered: Text > 80 Characters." ); bug( text ); return; } sprintf( tmp1, "%%%ds%%s\n\r", 40-strlen( text )/2 ); sprintf( tmp2, tmp1, "", text ); send( tmp2, ch ); return; } void send_underlined( char_data* ch, const char* text ) { char tmp [ TWO_LINES ]; int i; send( text, ch ); for( i = 0; i < strlen( text ); i++ ) if( text[i] == ' ' || text[i] == '\n' || text[i] == '\r' ) tmp[i] = text[i]; else tmp[i] = '-'; tmp[i] = '\0'; send( tmp, ch ); return; }