Merc CLAN Snippet

[download]


/***************************************************************************
* Clan functions for EmberMUD 0.17 (and maybe later versions up until *
* they were removed). I dunno if anyone else is using the old EmberMUD *
* code, but what the hey, guess I'll post it and see :) *
* *
* The petition command uses Erwin's board system. Pretty neat, if you *
* don't have it, you might wanna look at it... *
* *
* If you choose to use this code, please retain my name in this file and *
* send me an email (dwa1844@rit.edu) saying you are using it. Suggestions *
* for improvement are welcome. *
***************************************************************************/

/*
* Clan accept command written by Rahl (Daniel Anderson).
*/
void do_accept( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char buf[MAX_STRING_LENGTH];
CLAN_DATA *Clan;

if ( ch->pcdata->clan == 0 )
{
send_to_char( "You aren't even in a clan!\n\r", ch );
return;
}

if ( !is_clan_leader( ch->name, clan_lookup( ch->pcdata->clan ) ) )
{
send_to_char( "You aren't the clan leader!\n\r", ch );
return;
}

if ( argument[0] == '\0' )
{
send_to_char( "Syntax: accept [character]\n\r", ch );
return;
}

if ( ( victim = get_char_world( ch, argument ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}

if ( victim->pcdata->clan != 0 )
{
sprintf( buf, "%s is already in a clan!\n\r", victim->name );
send_to_char( buf, ch );
return;
}

sprintf( buf, "%d", ch->pcdata->clan );
Clan = find_clan( buf );

/* uses the do_test function to check the requirements */
sprintf( buf, "%s %s", victim->name, Clan->name );
do_test( ch, buf );

if ( clan_accept( victim, Clan->name ) != 0 )
{
/* doesn't fit requirements */
return;
}
else
{
Clan->members[Clan->num_members] = strdup( victim->name );
Clan->num_members += 1;
victim->pcdata->clan = ch->pcdata->clan;
sprintf( buf, "You are now a member of %s.\n\r",
vis_clan( ch->pcdata->clan ) );
send_to_char( buf, victim );
sprintf( buf, "%s is now a member of %s.\n\r", victim->name,
vis_clan( ch->pcdata->clan ) );
log_string( buf );
send_to_char( buf, ch );
do_save( victim, "" );
do_asave( victim, "clans" );
}
return;
}


/*
* Clan disown command written by Rahl (Daniel Anderson).
*/
void do_disown( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char buf[MAX_STRING_LENGTH];
CLAN_DATA *Clan;
int count, count2;

if ( ch->pcdata->clan == 0 )
{
send_to_char( "You aren't even in a clan!\n\r", ch );
return;
}

if ( !is_clan_leader( ch->name, clan_lookup( ch->pcdata->clan ) ) )
{
send_to_char( "You aren't the clan leader!\n\r", ch );
return;
}

if ( argument[0] == '\0' )
{
send_to_char( "Syntax: disown [character]\n\r", ch );
return;
}

if ( ( victim = get_char_world( ch, argument ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}

if ( victim->pcdata->clan != ch->pcdata->clan )
{
sprintf( buf, "%s is not in %s!\n\r", victim->name,
vis_clan( ch->pcdata->clan ) );
send_to_char( buf, ch );
return;
}

sprintf( buf, "%d", ch->pcdata->clan );
Clan = find_clan( buf );

/* remove them from the clan member list in clans.are */
for ( count = 0; count < Clan->max_members; count++ )
{
if ( Clan->members[count] == victim->name )
{
Clan->members[count] = Clan->members[count+1];
for ( count2 = count + 1; count2 < Clan->max_members - 1; count2++ )
{
Clan->members[count2] = Clan->members[count2+1];
}
}
else
continue;
}
Clan->num_members -= 1;
victim->pcdata->clan = 0;
sprintf( buf, "You are no longer a member of %s.\n\r",
vis_clan( ch->pcdata->clan ) );
send_to_char( buf, victim );
sprintf( buf, "%s is no longer a member of %s.\n\r", victim->name,
vis_clan( ch->pcdata->clan ) );
log_string( buf );
send_to_char( buf, ch );
do_save( victim, "" );
do_asave( victim, "clans" );
return;
}

/* petition by Rahl (Daniel Anderson) */
void do_petition( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
CLAN_DATA *pClan;

one_argument( argument, arg );

if ( IS_NPC( ch ) )
{
send_to_char( "You can't join a clan!\n\r", ch );
return;
}

if ( ch->pcdata->clan != 0 )
{
send_to_char( "But you're already in a clan!\n\r", ch );
return;
}

if ( arg[0] == '\0' )
{
send_to_char( "Which clan do you wish to petition?\n\r", ch );
return;
}

pClan = find_clan( arg );

if ( pClan == NULL )
{
send_to_char( "That clan does not exist.\n\r", ch );
send_to_char( "Try using the clan short name shown in 'show clans'\n\r", ch );
return;
}

make_note( "Personal", ch->name, pClan->leader, pClan->visible, 14,
"I wish to join your clan." );
return;
}