#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
/* #include <stdlib.h> */
#include <time.h>
#include "mud.h"
JEDI_DATA * first_jedi;
JEDI_DATA * last_jedi;
SENATE2_DATA * first_senate;
SENATE2_DATA * last_senate;
static OBJ_DATA * rgObjNest [MAX_NEST];
void fread_jedi args( ( JEDI_DATA *clan, FILE *fp ) );
bool load_jedi_file args( ( char *clanfile ) );
void write_jedi_list args( ( void ) );
void fread_senate args( ( SENATE2_DATA *clan, FILE *fp ) );
bool load_senate_file args( ( char *clanfile ) );
void write_senate_list args( ( void ) );
/*
* Get pointer to clan structure from clan name.
*/
JEDI_DATA *get_jedi( char *name )
{
JEDI_DATA *clan;
for ( clan = first_jedi; clan; clan = clan->next )
if ( !str_cmp( name, clan->name ) )
return clan;
return NULL;
};
SENATE2_DATA * get_senate( char *name )
{
SENATE2_DATA *clan;
for ( clan = first_senate; clan; clan = clan->next )
if ( !str_cmp( name, clan->name ) )
return clan;
return NULL;
}
void do_remsenate(CHAR_DATA *ch, char *argument){
SENATE2_DATA *clan;
if ( argument[0] == '\0' )
{
send_to_char( "&wRemove which senate seat?\n\r", ch );
return;
}
if ((clan = get_senate(argument)) == NULL)
{
send_to_char("No such senate.\n\r", ch);
return;
}
UNLINK( clan, first_senate, last_senate, next, prev );
STRFREE( clan->name );
DISPOSE( clan );
write_senate_list();
}
void do_remcouncil(CHAR_DATA *ch, char *argument)
{
JEDI_DATA *clan;
if( argument[0] == '\0' )
{
send_to_char( "&wNo such council.\n\r", ch );
return;
}
if ((clan = get_jedi(argument)) == NULL)
{
send_to_char("No such council.\n\r", ch);
return;
}
UNLINK( clan, first_jedi, last_jedi, next, prev );
STRFREE( clan->name );
DISPOSE( clan );
write_jedi_list();
}
void write_senate_list( )
{
SENATE2_DATA *tclan;
FILE *fpout;
char filename[256];
sprintf( filename, "%s%s", SENATE_DIR, SENATE_LIST );
fpout = fopen( filename, "w" );
if ( !fpout )
{
bug( "FATAL: cannot open senate.lst for writing!\n\r", 0 );
return;
}
for ( tclan = first_senate; tclan; tclan = tclan->next )
fprintf( fpout, "%s\n", tclan->filename );
fprintf( fpout, "$\n" );
fclose( fpout );
}
void write_jedi_list( )
{
JEDI_DATA *tclan;
FILE *fpout;
char filename[256];
sprintf( filename, "%s%s", JEDI_DIR, JEDI_LIST );
fpout = fopen( filename, "w" );
if ( !fpout )
{
bug( "FATAL: cannot open CLAN.lst for writing!\n\r", 0 );
return;
}
for ( tclan = first_jedi; tclan; tclan = tclan->next )
fprintf( fpout, "%s\n", tclan->filename );
fprintf( fpout, "$\n" );
fclose( fpout );
}
void save_jedi( JEDI_DATA *clan )
{
FILE *fp;
char filename[256];
char buf[MAX_STRING_LENGTH];
if ( !clan )
{
bug( "save_clan: null clan pointer!", 0 );
return;
}
if ( !clan->filename || clan->filename[0] == '\0' )
{
sprintf( buf, "save_clan: %s has no filename", clan->name );
bug( buf, 0 );
return;
}
sprintf( filename, "%s%s", JEDI_DIR, clan->filename );
if ( ( fp = fopen( filename, "w" ) ) == NULL )
{
bug( "save_clan: fopen", 0 );
perror( filename );
}
else
{
fprintf( fp, "#CLAN\n" );
fprintf( fp, "Name %s~\n", clan->name );
fprintf( fp, "Filename %s~\n", clan->filename );
fprintf( fp, "Leader %s~\n", clan->leader );
fprintf( fp, "NumberOne %s~\n", clan->number1 );
fprintf( fp, "NumberTwo %s~\n", clan->number2 );
fprintf( fp, "End\n\n" );
fprintf( fp, "#END\n" );
}
fclose( fp );
return;
}
void save_senates( SENATE2_DATA *clan )
{
FILE *fp;
char filename[256];
char buf[MAX_STRING_LENGTH];
if ( !clan )
{
bug( "save_senates: null senate pointer!", 0 );
return;
}
if ( !clan->filename || clan->filename[0] == '\0' )
{
sprintf( buf, "save_senate: %s has no filename", clan->name );
bug( buf, 0 );
return;
}
sprintf( filename, "%s%s", SENATE_DIR, clan->filename );
if ( ( fp = fopen( filename, "w" ) ) == NULL )
{
bug( "save_clan: fopen", 0 );
perror( filename );
}
else
{
fprintf( fp, "#CLAN\n" );
fprintf( fp, "Name %s~\n", clan->name );
fprintf( fp, "Filename %s~\n", clan->filename );
fprintf( fp, "Leader %s~\n", clan->leader );
fprintf( fp, "NumberOne %s~\n", clan->number1 );
fprintf( fp, "NumberTwo %s~\n", clan->number2 );
fprintf( fp, "End\n\n" );
fprintf( fp, "#END\n" );
}
fclose( fp );
return;
}
/*
* Read in actual clan data.
*/
#if defined(KEY)
#undef KEY
#endif
#define KEY( literal, field, value ) \
if ( !str_cmp( word, literal ) ) \
{ \
field = value; \
fMatch = TRUE; \
break; \
}
void fread_jedi( JEDI_DATA *clan, FILE *fp )
{
char buf[MAX_STRING_LENGTH];
char *word;
bool fMatch;
for ( ; ; )
{
word = feof( fp ) ? "End" : fread_word( fp );
fMatch = FALSE;
switch ( UPPER(word[0]) )
{
case '*':
fMatch = TRUE;
fread_to_eol( fp );
break;
case 'E':
if ( !str_cmp( word, "End" ) )
{
if (!clan->name)
clan->name = STRALLOC( "" );
if (!clan->leader)
clan->leader = STRALLOC( "" );
if (!clan->description)
clan->description = STRALLOC( "" );
if (!clan->number1)
clan->number1 = STRALLOC( "" );
if (!clan->number2)
clan->number2 = STRALLOC( "" );
if (!clan->tmpstr)
clan->tmpstr = STRALLOC( "" );
if (!clan->atwar)
clan->atwar = STRALLOC( "" );
return;
}
break;
case 'F':
KEY( "Filename", clan->filename, fread_string_nohash( fp ) );
break;
case 'L':
KEY( "Leader", clan->leader, fread_string( fp ) );
break;
case 'N':
KEY( "Name", clan->name, fread_string( fp ) );
KEY( "NumberOne", clan->number1, fread_string( fp ) );
KEY( "NumberTwo", clan->number2, fread_string( fp ) );
break;
}
if ( !fMatch )
{
sprintf( buf, "Fread_clan: no match: %s", word );
bug( buf, 0 );
}
}
}
void fread_senate( SENATE2_DATA *clan, FILE *fp )
{
char buf[MAX_STRING_LENGTH];
char *word;
bool fMatch;
for ( ; ; )
{
word = feof( fp ) ? "End" : fread_word( fp );
fMatch = FALSE;
switch ( UPPER(word[0]) )
{
case '*':
fMatch = TRUE;
fread_to_eol( fp );
break;
case 'E':
if ( !str_cmp( word, "End" ) )
{
if (!clan->name)
clan->name = STRALLOC( "" );
if (!clan->leader)
clan->leader = STRALLOC( "" );
if (!clan->description)
clan->description = STRALLOC( "" );
if (!clan->number1)
clan->number1 = STRALLOC( "" );
if (!clan->number2)
clan->number2 = STRALLOC( "" );
if (!clan->tmpstr)
clan->tmpstr = STRALLOC( "" );
if (!clan->atwar)
clan->atwar = STRALLOC( "" );
return;
}
break;
case 'F':
KEY( "Filename", clan->filename, fread_string_nohash( fp ) );
break;
case 'L':
KEY( "Leader", clan->leader, fread_string( fp ) );
break;
case 'N':
KEY( "Name", clan->name, fread_string( fp ) );
KEY( "NumberOne", clan->number1, fread_string( fp ) );
KEY( "NumberTwo", clan->number2, fread_string( fp ) );
break;
}
if ( !fMatch )
{
sprintf( buf, "Fread_clan: no match: %s", word );
bug( buf, 0 );
}
}
}
bool load_jedi_file( char *clanfile )
{
char filename[256];
JEDI_DATA *clan;
FILE *fp;
bool found;
CREATE( clan, JEDI_DATA, 1 );
clan->next_subclan = NULL;
clan->prev_subclan = NULL;
clan->last_subclan = NULL;
clan->first_subclan = NULL;
clan->mainclan = NULL;
found = FALSE;
sprintf( filename, "%s%s", JEDI_DIR, clanfile );
if ( ( fp = fopen( filename, "r" ) ) != NULL )
{
found = TRUE;
for ( ; ; )
{
char letter;
char *word;
letter = fread_letter( fp );
if ( letter == '*' )
{
fread_to_eol( fp );
continue;
}
if ( letter != '#' )
{
bug( "Load_jedi_file: # not found.", 0 );
break;
}
word = fread_word( fp );
if ( !str_cmp( word, "CLAN" ) )
{
fread_jedi( clan, fp );
break;
}
else
if ( !str_cmp( word, "END" ) )
break;
else
{
char buf[MAX_STRING_LENGTH];
sprintf( buf, "Load_jedi_file: bad section: %s.", word );
bug( buf, 0 );
break;
}
}
fclose( fp );
}
if ( found )
{
ROOM_INDEX_DATA *storeroom;
LINK( clan, first_jedi, last_jedi, next, prev );
if ( clan->storeroom == 0
|| (storeroom = get_room_index( clan->storeroom )) == NULL )
{
log_string( "Storeroom not found" );
return found;
}
sprintf( filename, "%s%s.vault", JEDI_DIR, clan->filename );
if ( ( fp = fopen( filename, "r" ) ) != NULL )
{
int iNest;
bool found;
OBJ_DATA *tobj, *tobj_next;
log_string( "Loading clan storage room" );
rset_supermob(storeroom);
for ( iNest = 0; iNest < MAX_NEST; iNest++ )
rgObjNest[iNest] = NULL;
found = TRUE;
for ( ; ; )
{
char letter;
char *word;
letter = fread_letter( fp );
if ( letter == '*' )
{
fread_to_eol( fp );
continue;
}
if ( letter != '#' )
{
bug( "Load_jedi_vault: # not found.", 0 );
bug( clan->name, 0 );
break;
}
word = fread_word( fp );
if ( !str_cmp( word, "OBJECT" ) ) /* Objects */
fread_obj ( supermob, fp, OS_CARRY );
else
if ( !str_cmp( word, "END" ) ) /* Done */
break;
else
{
bug( "Load_jedi_vault: bad section.", 0 );
bug( clan->name, 0 );
break;
}
}
fclose( fp );
for ( tobj = supermob->first_carrying; tobj; tobj = tobj_next
)
{
tobj_next = tobj->next_content;
obj_from_char( tobj );
obj_to_room( tobj, storeroom );
}
release_supermob();
}
else
log_string( "Cannot open clan vault" );
}
else
DISPOSE( clan );
return found;
}
bool load_senate_file( char *clanfile )
{
char filename[256];
SENATE2_DATA *clan;
FILE *fp;
bool found;
CREATE( clan, SENATE2_DATA, 1 );
clan->next_subclan = NULL;
clan->prev_subclan = NULL;
clan->last_subclan = NULL;
clan->first_subclan = NULL;
clan->mainclan = NULL;
found = FALSE;
sprintf( filename, "%s%s", SENATE_DIR, clanfile );
if ( ( fp = fopen( filename, "r" ) ) != NULL )
{
found = TRUE;
for ( ; ; )
{
char letter;
char *word;
letter = fread_letter( fp );
if ( letter == '*' )
{
fread_to_eol( fp );
continue;
}
if ( letter != '#' )
{
bug( "Load_senate_file: # not found.", 0 );
break;
}
word = fread_word( fp );
if ( !str_cmp( word, "CLAN" ) )
{
fread_senate( clan, fp );
break;
}
else
if ( !str_cmp( word, "END" ) )
break;
else
{
char buf[MAX_STRING_LENGTH];
sprintf( buf, "Load_senate_file: bad section: %s.", word );
bug( buf, 0 );
break;
}
}
fclose( fp );
}
if ( found )
{
ROOM_INDEX_DATA *storeroom;
LINK( clan, first_senate, last_senate, next, prev );
if ( clan->storeroom == 0
|| (storeroom = get_room_index( clan->storeroom )) == NULL )
{
log_string( "Storeroom not found" );
return found;
}
sprintf( filename, "%s%s.vault", SENATE_DIR, clan->filename );
if ( ( fp = fopen( filename, "r" ) ) != NULL )
{
int iNest;
bool found;
OBJ_DATA *tobj, *tobj_next;
log_string( "Loading clan storage room" );
rset_supermob(storeroom);
for ( iNest = 0; iNest < MAX_NEST; iNest++ )
rgObjNest[iNest] = NULL;
found = TRUE;
for ( ; ; )
{
char letter;
char *word;
letter = fread_letter( fp );
if ( letter == '*' )
{
fread_to_eol( fp );
continue;
}
if ( letter != '#' )
{
bug( "Load_senate_vault: # not found.", 0 );
bug( clan->name, 0 );
break;
}
word = fread_word( fp );
if ( !str_cmp( word, "OBJECT" ) ) /* Objects */
fread_obj ( supermob, fp, OS_CARRY );
else
if ( !str_cmp( word, "END" ) ) /* Done */
break;
else
{
bug( "Load_senate_vault: bad section.", 0 );
bug( clan->name, 0 );
break;
}
}
fclose( fp );
for ( tobj = supermob->first_carrying; tobj; tobj = tobj_next )
{
tobj_next = tobj->next_content;
obj_from_char( tobj );
obj_to_room( tobj, storeroom );
}
release_supermob();
}
else
log_string( "Cannot open clan vault" );
}
else
DISPOSE( clan );
return found;
}
void load_senates( )
{
FILE *fpList;
char *filename;
char clanlist[256];
char buf[MAX_STRING_LENGTH];
SENATE2_DATA *clan;
SENATE2_DATA *bosclan;
first_senate = NULL;
last_senate = NULL;
log_string( "Loading senates..." );
sprintf( clanlist, "%s%s", SENATE_DIR, SENATE_LIST );
fclose( fpReserve );
if ( ( fpList = fopen( clanlist, "r" ) ) == NULL )
{
perror( clanlist );
exit( 1 );
}
for ( ; ; )
{
filename = feof( fpList ) ? "$" : fread_word( fpList );
log_string( filename );
if ( filename[0] == '$' )
break;
if ( !load_senate_file( filename ) )
{
sprintf( buf, "Cannot load senate file: %s", filename );
bug( buf, 0 );
}
}
fclose( fpList );
log_string(" Done clans\n\rSorting clans...." );
fpReserve = fopen( NULL_FILE, "r" );
for ( clan=first_senate ; clan ; clan = clan->next )
{
if ( !clan->tmpstr || clan->tmpstr[0] == '\0' )
continue;
bosclan = get_senate( clan->tmpstr );
if ( !bosclan )
continue;
LINK( clan , bosclan->first_subclan , bosclan->last_subclan , next_subclan, prev_subclan );
clan->mainclan = bosclan;
}
log_string(" Done sorting" );
return;
}
void load_jedis( )
{
FILE *fpList;
char *filename;
char clanlist[256];
char buf[MAX_STRING_LENGTH];
JEDI_DATA *clan;
JEDI_DATA *bosclan;
first_jedi = NULL;
last_clan = NULL;
log_string( "Loading clans..." );
sprintf( clanlist, "%s%s", JEDI_DIR, JEDI_LIST );
fclose( fpReserve );
if ( ( fpList = fopen( clanlist, "r" ) ) == NULL )
{
perror( clanlist );
exit( 1 );
}
for ( ; ; )
{
filename = feof( fpList ) ? "$" : fread_word( fpList );
log_string( filename );
if ( filename[0] == '$' )
break;
if ( !load_jedi_file( filename ) )
{
sprintf( buf, "Cannot load clan file: %s", filename );
bug( buf, 0 );
}
}
fclose( fpList );
log_string(" Done clans\n\rSorting clans...." );
fpReserve = fopen( NULL_FILE, "r" );
for ( clan=first_jedi ; clan ; clan = clan->next )
{
if ( !clan->tmpstr || clan->tmpstr[0] == '\0' )
continue;
bosclan = get_jedi ( clan->tmpstr );
if ( !bosclan )
continue;
LINK( clan , bosclan->first_subclan , bosclan->last_subclan , next_subclan, prev_subclan );
clan->mainclan = bosclan;
}
log_string(" Done sorting" );
return;
}
void do_setjedi( CHAR_DATA *ch, char *argument )
{
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
JEDI_DATA *clan;
if ( IS_NPC( ch ) )
{
send_to_char( "Huh?\n\r", ch );
return;
}
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( arg1[0] == '\0' )
{
send_to_char( "Usage: setjedi <position> <field> <leader|investigator> <player>\n\r", ch );
send_to_char( "\n\rField being one of:\n\r", ch );
send_to_char( " leader investigator\n\r", ch );
if ( get_trust( ch ) >= LEVEL_SUB_IMPLEM )
{
send_to_char( " name filename\n\r", ch );
}
return;
}
clan = get_jedi( arg1 );
if ( !clan )
{
send_to_char( "No such clan.\n\r", ch );
return;
}
if ( !strcmp( arg2, "leader" ) )
{
STRFREE( clan->leader );
clan->leader = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_jedi( clan );
return;
}
if ( !strcmp( arg2, "investigator" ) )
{
STRFREE( clan->number1 );
clan->number1 = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_jedi( clan );
return;
}
if ( get_trust( ch ) < LEVEL_SUB_IMPLEM )
{
do_setclan( ch, "" );
return;
}
if ( !strcmp( arg2, "name" ) )
{
STRFREE( clan->name );
clan->name = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_jedi( clan );
return;
}
if ( !strcmp( arg2, "filename" ) )
{
DISPOSE( clan->filename );
clan->filename = str_dup( argument );
send_to_char( "Done.\n\r", ch );
save_jedi( clan );
write_jedi_list( );
return;
}
do_setjedi( ch, "" );
return;
}
void do_setsenate( CHAR_DATA *ch, char *argument )
{
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
SENATE2_DATA *clan;
if ( IS_NPC( ch ) )
{
send_to_char( "Huh?\n\r", ch );
return;
}
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( arg1[0] == '\0' )
{
send_to_char( "Usage: setsenate <senate> <field> <senator|assnt1|assnt2> <player>\n\r", ch );
send_to_char( "\n\rField being one of:\n\r", ch );
send_to_char( " senator assnt1 assnt2\n\r", ch );
if ( get_trust( ch ) >= LEVEL_SUB_IMPLEM )
{
send_to_char( " name filename\n\r", ch );
}
return;
}
clan = get_senate( arg1 );
if ( !clan )
{
send_to_char( "No such clan.\n\r", ch );
return;
}
if ( !strcmp( arg2, "senator" ) )
{
STRFREE( clan->leader );
clan->leader = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_senates( clan );
return;
}
if ( !strcmp( arg2, "assnt1" ) )
{
STRFREE( clan->number1 );
clan->number1 = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_senates( clan );
return;
}
if ( !strcmp( arg2, "assnt2" ) )
{
STRFREE( clan->number2 );
clan->number2 = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_senates( clan );
return;
}
if ( get_trust( ch ) < LEVEL_SUB_IMPLEM )
{
do_setclan( ch, "" );
return;
}
if ( !strcmp( arg2, "name" ) )
{
STRFREE( clan->name );
clan->name = STRALLOC( argument );
send_to_char( "Done.\n\r", ch );
save_senates( clan );
return;
}
if ( !strcmp( arg2, "filename" ) )
{
DISPOSE( clan->filename );
clan->filename = str_dup( argument );
send_to_char( "Done.\n\r", ch );
save_senates( clan );
write_senate_list( );
return;
}
do_setjedi( ch, "" );
return;
}
void do_showjedi( CHAR_DATA *ch, char *argument )
{
JEDI_DATA *clan;
if ( IS_NPC( ch ) )
{
send_to_char( "Huh?\n\r", ch );
return;
}
if ( argument[0] == '\0' )
{
send_to_char( "Usage: showjedi <jedi seat>\n\r", ch );
return;
}
clan = get_jedi( argument );
if ( !clan )
{
send_to_char( "No such position.\n\r", ch );
return;
}
ch_printf( ch, "%s\n\rFilename: %s\n\r",
clan->name,
clan->filename);
ch_printf( ch, "Leader: %s\n\r", clan->leader );
ch_printf( ch, "Investigator: %s\n\r", clan->number1 );
return;
}
void do_showsenate( CHAR_DATA *ch, char *argument )
{
SENATE2_DATA *clan;
if ( IS_NPC( ch ) )
{
send_to_char( "Huh?\n\r", ch );
return;
}
if ( argument[0] == '\0' )
{
send_to_char( "Usage: showsenate <senate>\n\r", ch );
return;
}
clan = get_senate( argument );
if ( !clan )
{
send_to_char( "No such senate.\n\r", ch );
return;
}
ch_printf( ch, "%s\n\rFilename: %s\n\r",
clan->name,
clan->filename);
ch_printf( ch, "Leader: %s\n\r",
clan->leader );
ch_printf( ch, "Assistant1: %s\n\rAssistant2: %s\n\r",
clan->number1,
clan->number2 );
return;
}
void do_makecouncil( CHAR_DATA *ch, char *argument )
{
char filename[256];
JEDI_DATA *clan;
bool found;
if ( !argument || argument[0] == '\0' )
{
send_to_char( "&gUsage: &wmakecouncil &g<&wcouncil posoition&g>&w\n\r", ch );
return;
}
found = FALSE;
sprintf( filename, "%s%s", JEDI_DIR, strlower(argument) );
CREATE( clan, JEDI_DATA, 1 );
LINK( clan, first_jedi, last_jedi, next, prev );
clan->next_subclan = NULL;
clan->prev_subclan = NULL;
clan->last_subclan = NULL;
clan->first_subclan = NULL;
clan->mainclan = NULL;
clan->name = STRALLOC( argument );
clan->leader = STRALLOC( "" );
clan->number1 = STRALLOC( "" );
clan->number2 = STRALLOC( "" );
send_to_char("Done.\n\r", ch);
return;
}
void do_makesenate( CHAR_DATA *ch, char *argument )
{
char filename[256];
SENATE2_DATA *clan;
bool found;
if ( !argument || argument[0] == '\0' )
{
send_to_char( "&gUsage: &wmakesenate &g<&wsenate position&g>&w\n\r", ch );
return;
}
found = FALSE;
sprintf( filename, "%s%s", SENATE_DIR, strlower(argument) );
CREATE( clan, SENATE2_DATA, 1 );
LINK( clan, first_senate, last_senate, next, prev );
clan->next_subclan = NULL;
clan->prev_subclan = NULL;
clan->last_subclan = NULL;
clan->first_subclan = NULL;
clan->mainclan = NULL;
clan->name = STRALLOC( argument );
clan->leader = STRALLOC( "" );
clan->number1 = STRALLOC( "" );
clan->number2 = STRALLOC( "" );
send_to_char("Done.\n\r", ch);
return;
}
void do_jedicouncil( CHAR_DATA *ch, char *argument )
{
JEDI_DATA *clan;
int count = 0;
ch_printf(ch, "\n\r" );
ch_printf(ch, " &pCouncil Seat Jedi Master &w\n\r" );
ch_printf(ch, " &w----------------------------------- &w\n\r" );
for ( clan = first_jedi; clan; clan = clan->next )
{
ch_printf( ch, " &W&G%-23.25s &c%-10s",
clan->name, clan->leader );
ch_printf( ch, "\n\r" );
count++;
}
if ( !count )
{
set_char_color( AT_BLUE, ch);
send_to_char( "There is currently no Jedi Countil.\n\r", ch );
}
return;
}
void do_senate( CHAR_DATA *ch, char *argument )
{
SENATE2_DATA *clan;
int count = 0;
ch_printf(ch, "\n\r" );
ch_printf(ch, " &pPlanet Representative Senator Assistant1 Assistant2 &w\n\r" );
ch_printf(ch, " &w--------------------------------------------------------------------&w\n\r" );
for ( clan = first_senate; clan; clan = clan->next )
{
ch_printf( ch, " &W&G%-27.25s &c%-14s &c%-14s &c%-10s",
clan->name, clan->leader, clan->number1, clan->number2 );
ch_printf( ch, "\n\r" );
count++;
}
if ( !count )
{
set_char_color( AT_BLOOD, ch);
send_to_char( "There is currently no Senate.\n\r", ch );
}
return;
}
int const senate_array[] = {
VNUM_FALLEEN, VNUM_DRALL, VNUM_CHANCELLOR, VNUM_YABLARI, VNUM_ALDERAAN,
VNUM_CEREA, VNUM_CHAMPALA, VNUM_URKUPP, VNUM_DORIN, VNUM_ALPHERIDIES,
VNUM_RODIA, VNUM_MON_CALAMARI, VNUM_MUUNILINST, VNUM_SKYE, VNUM_SULLUST,
VNUM_UMBARA, VNUM_KASHYYYK, VNUM_WOOSTRI, VNUM_CORELLIA, VNUM_NABOO,
VNUM_UBA_111, VNUM_ROCHE, VNUM_IKTOTCH
};
char * const senate_name[] = {
"Falleen", "Drall", "Supreme Chancellor", "Yablari", "Alderaan", "Cerea",
"Champala", "Urkupp", "Dorin", "Alpheridies", "Rodia", "Mon Calamari",
"Muunilinst", "Skye", "Sullust", "Umbara", "Kashyyyk", "Woostri", "Corellia",
"Naboo", "Uba 111", "Roche Asteroid", "Iktotch"
};
void do_checksenate( CHAR_DATA *ch, char *argument )
{
ROOM_INDEX_DATA *room;
CHAR_DATA *gch;
int vnum, count;
if( IS_NPC(ch) )
return;
if( !IS_IMMORTAL(ch) && !IS_SET(ch->in_room->room_flags2, ROOM_SENATE) )
{
send_to_char("&wYou must be in the &bSenate Chamber&w to use this command.&w\n\r", ch );
return;
}
send_to_char( "&gSenate Seat &w\n\r", ch );
for( vnum = 0; vnum < 23; vnum++ )
{
room = get_room_index( senate_array[vnum] );
if( !room )
continue;
count = 0;
for( gch = room->first_person; gch; gch = gch->next_in_room )
count++;
if( count == 0 )
ch_printf( ch, "&w%-25s &rNot Present&w\n\r", senate_name[vnum] );
else
ch_printf( ch, "&w%-25s &gIn Attendence&w\n\r", senate_name[vnum] );
}
return;
}