void do_change (CHAR_DATA *ch, char *argument)
{
CHAR_DATA *banker;
int amount = 0;
int change = 0;
int silver;
int copper;
char buf [MAX_STRING_LENGTH];
char arg1 [MAX_INPUT_LENGTH];
char arg2 [MAX_INPUT_LENGTH];
if ( !( banker = find_banker( ch ) ) )
{
send_to_char( "You're not in a bank!\n\r", ch );
return;
}
if ( IS_NPC( ch ) )
{
sprintf( buf, "Sorry, %s, we don't do business with mobs.", ch->short_descr );
do_say( banker, buf );
return;
}
if ( argument[0] == '\0' )
{
do_say( banker, "If you need help, see HELP BANK." );
return;
}
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( arg1 == '\0' || arg2 == '\0' )
{
sprintf( buf, "%s How much silver or copper do you wish to change into gold?", ch->name );
do_tell( banker, buf );
return;
}
/* Call for changing Silver */
if ( !str_cmp( arg2, "silver" ) )
{
if ( str_cmp(arg1, "all") && !is_number( arg1 ) )
{
sprintf( buf, "%s How much silver do you wish to change?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg1, "all" ) )
{
amount = ch->silver/100;
change = ch->silver%100;
}
else
{
amount = atoi( arg1 )/100;
change = atoi( arg1 )%100;
if ( change > 100 )
{
//If you have over 100 silver after you get your change,
//convert the other extra silver to gold, and get the difference
change -=100;
silver++;
}
}
if ( amount > ch->silver )
{
sprintf( buf, "%s Sorry, but you don't have that much silver to change.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->gold += amount;
ch->silver = change;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You exchanged your silver for %d gold coins.\n\r", amount );
sprintf( buf, "$n changes some currency.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
/* Call for changing Copper */
if ( !str_cmp( arg2, "copper" ) )
{
if ( str_cmp(arg1, "all") && !is_number( arg1 ) )
{
sprintf( buf, "%s How much copper do you wish to change?", ch->name );
do_tell( banker, buf );
return;
}
if ( !str_cmp( arg1, "all" ) )
{
amount = ch->copper/100;
change = ch->copper%100;
}
else
{
amount = atoi( arg1 )/100;
change = atoi( arg1 )%100;
if ( change > 100 )
{
//If you have over 1000 copper after you get your change,
//convert the other extra copper to silver, and get the difference
change -=100;
copper++;
}
}
if ( amount > ch->copper )
{
sprintf( buf, "%s Sorry, but you don't have that much silver to change.", ch->name );
do_tell( banker, buf );
return;
}
else
{
ch->silver += amount;
ch->copper = change;
set_char_color( AT_PLAIN, ch );
ch_printf( ch, "You exchanged your copper for %d silver coins.\n\r", amount );
sprintf( buf, "$n changes some currency.\n\r" );
act( AT_PLAIN, buf, ch, NULL, NULL, TO_ROOM );
save_char_obj( ch );
return;
}
}
}
}
I posted this just in case it helps any. :)
-Toy |