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;
}