/***************************************************************************
* God Wars Mud originally written by KaVir aka Richard Woolcock. *
* Changes done to the code done by Sage aka Walter Howard, this mud is *
* for the public, however if you run this code it means you agree *
* to the license.low, license.gw, and license.merc have fun. :) *
***************************************************************************/
/*This code was written by KaVir and he is to be given full credit for it*/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#define FILE_CLAN "../area/clan.txt"
CLAN_DATA * clans_data [MAX_CLAN];
/*
* Clan table.
*/
char * const clan_table [] =
{
"None",
"None",
"None",
"None",
"None",
"None",
"None",
"None",
"None",
"None",
"None",
"None"
};
bool clan_exist( )
{
FILE *fp;
char buf [MAX_STRING_LENGTH];
bool found = FALSE;
fclose( fpReserve );
sprintf( buf, "%s", FILE_CLAN );
if ( ( fp = fopen( buf, "r" ) ) != NULL )
{
found = TRUE;
fclose( fp );
}
fpReserve = fopen( NULL_FILE, "r" );
return found;
}
void do_clanlist( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
int i;
send_to_char("--------------------"
"-------------- CLAN "
"LIST ---------------"
"--------------------\n\r", ch );
for ( i = 0; i < MAX_CLAN; i++ )
{
sprintf( buf, "%-15s Leader:%-16s Prince:%-16s Members:%-3d\n\r",
clan_table[i], clans_data[i]->clan_head, clans_data[i]->primogen,
clans_data[i]->members );
send_to_char( buf, ch );
}
send_to_char("--------------------"
"--------------------"
"--------------------"
"--------------------\n\r", ch );
return;
}
void clan_write( )
{
FILE *fp;
int i;
fflush( fpReserve );
fclose( fpReserve );
if ( ( fp = fopen( CLAN_DIR, "w" ) ) == NULL )
bug("Cannot Open clan data file.", 0);
else
{
for ( i = 0; i < MAX_CLAN; i++ )
{
fprintf( fp, "%s %d %s %s\n",
clan_table[i], clans_data[i]->members,
clans_data[i]->clan_head, clans_data[i]->primogen );
}
}
fflush( fp );
fclose( fp );
fpReserve = fopen( NULL_FILE, "r" );
return;
}
void clan_read( )
{
FILE *fp;
int i;
if ( !clan_exist() )
{
for ( i = 0; i < MAX_CLAN; i++ )
{
clans_data[i] = alloc_perm( sizeof(CLAN_DATA) );
clans_data[i]->members = 0;
clans_data[i]->clan_head = str_dup( "None" );
clans_data[i]->primogen = str_dup( "None" );
}
clan_write();
return;
}
fflush( fpReserve );
fclose( fpReserve );
if ( ( fp = fopen( CLAN_DIR, "r" ) ) != NULL )
{
if ( fread_letter( fp ) == EOF )
{
bug( "clan_read: blank file.", 0 );
for ( i = 0; i < MAX_CLAN; i++ )
{
clans_data[i] = alloc_perm( sizeof(CLAN_DATA) );
clans_data[i]->members = 0;
clans_data[i]->clan_head = str_dup( "None" );
clans_data[i]->primogen = str_dup( "None" );
}
clan_write();
return;
}
for ( i = 0; i < MAX_CLAN; i++ )
{
fread_word( fp );
clans_data[i] = alloc_perm( sizeof(CLAN_DATA) );
clans_data[i]->members = fread_number( fp );
clans_data[i]->clan_head = str_dup( fread_word( fp ) );
clans_data[i]->primogen = str_dup( fread_word( fp ) );
}
}
else
{
bug( "clan_read: fopen", 0 );
perror( CLAN_DIR );
}
fflush( fp );
fclose( fp );
fpReserve = fopen( NULL_FILE, "r" );
return;
}
void update_clanlist( CHAR_DATA *ch, bool add_char )
{
int clan = find_clanname( ch );
if ( clan < 0 ) return;
if ( add_char )
clans_data[clan]->members++;
else
{
clans_data[clan]->members--;
if ( !str_cmp( ch->name, clans_data[clan]->clan_head ) )
{
free_string( clans_data[clan]->clan_head );
clans_data[clan]->clan_head = str_dup( "None" );
}
if ( !str_cmp( ch->name, clans_data[clan]->primogen ) )
{
free_string( clans_data[clan]->primogen );
clans_data[clan]->primogen = str_dup( "None" );
}
}
clan_write();
return;
}
int find_clanname( CHAR_DATA *ch )
{
int clan;
if ( strlen( ch->clan ) < 2 || !str_cmp( ch->clan, "None" ) ) clan = 0;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else if ( !str_cmp( ch->clan, "None" ) ) clan = CLAN_NONE;
else return -1;
return clan;
}