/* Banking system by Vir
 * mailto:leckey@rogers.wave.ca
 * (C)opyright 1997, Eternal Struggle MUD
 * telnet://es.mudservices.com:4321
 * http://es.mudservices.com/index.html
 * Made for a SMAUG MUD Code Base.
 * May be used by anybody providing this header stays.
 */

/* Remember to add a "balance" pointer in the char_data struct in "mud.h"
 * Also, add ch->balance to fwrite_char and fread_char.
 * If you have on-line player creation or remorting, add ch->balance = 0 in
 * "load_char_obj".
 * That's all you need to do.
 * Enjoy!
 */

#define BANK_VNUM_1 21005 /*Change this to the vnum that you want your bank to be.*/

void do_balance( CHAR_DATA *ch, char *argument )
{
 char arg[MAX_INPUT_LENGTH];
 char buf[MAX_INPUT_LENGTH];
 argument = one_argument( argument, arg );

 if ( IS_NPC(ch) )
 {
  send_to_char( "Mobs don't have bank accounts.\n\r", ch );
  return;
 }

 if ( IS_IMMORTAL(ch) )
 {
  send_to_char( "You don't need a bank account!\n\r", ch );
  return;
 }

 if ( NOT_AUTHED(ch) )
 {
  send_to_char( "Huh?" );
  return;
 }

 sprintf( buf, "Your Current Balance: %d gold pieces", ch->balance );
 set_char_color( AT_YELLOW, ch );
 send_to_char( buf, ch );
 return;
}

void do_withdraw( CHAR_DATA *ch, char *argument )
{
 ROOM_INDEX_DATA *location;
 char arg[MAX_INPUT_LENGTH];
 char buf[MAX_INPUT_LENGTH];
 int amount;
 argument = one_argument( argument, arg );

 if ( IS_NPC(ch) )
 {
  send_to_char( "Mobs don't have bank accounts!\n\r", ch );
  return;
 }

 if ( NOT_AUTHED(ch) )
 {
  send_to_char( "Huh?", ch );
  return;
 }

 if ( arg[0] == '\0' )
 {
  send_to_char( "Withdraw how much?\n\r", ch );
  return;
 }

 if ( IS_IMMORTAL(ch) )
 {
  send_to_char( "You do not need a bank account!\n\r", ch );
  return;
 }

 location = ch->in_room;

 if ( !(location->vnum == BANK_VNUM_1) )
 {
  send_to_char( "You are not in a bank.\n\r", ch );
  return;
 }

 if ( !is_number( arg ) )
 {
  send_to_char( "Withdraw how much?\n\r", ch );
  return;
 }

 amount = atoi(arg);
 if ( ch->balance < amount )
 {
  send_to_char( "Your account does not have that much gold in it!\n\r", ch );
  return;
 }
 ch->gold += amount;
 ch->balance -= amount;
 act( AT_YELLOW, "$n withdraws some gold.", ch, NULL, NULL, TO_ROOM );
 return;
}

void do_deposit( CHAR_DATA *ch, char *argument )
{
 ROOM_INDEX_DATA *location;
 char arg[MAX_INPUT_LENGTH];
 char buf[MAX_INPUT_LENGTH];
 int amount;
 argument = one_argument( argument, arg );

 if ( IS_NPC(ch) )
 {
  send_to_char( "Mobs don't have bank accounts!\n\r", ch );
  return;
 }

 if ( NOT_AUTHED(ch) )
 {
  send_to_char( "Huh?", ch );
  return;
 }

 if ( arg[0] == '\0' )
 {
  send_to_char( "Deposit how much?\n\r", ch );
  return;
 }

 if ( IS_IMMORTAL(ch) )
 {
  send_to_char( "You do not need a bank account!\n\r", ch );
  return;
 }

 location = ch->in_room;

 if ( !(location->vnum == BANK_VNUM_1) )
 {
  send_to_char( "You are not in a bank.\n\r", ch );
  return;
 }

 if ( !is_number( arg ) )
 {
  send_to_char( "Deposit how much?\n\r", ch );
  return;
 }

 amount = atoi(arg);
 if ( ch->gold < amount )
 {
  send_to_char( "You don't have that much gold!\n\r", ch );
  return;
 }
 ch->gold -= amount;
 ch->balance += amount;
 act( AT_YELLOW, "$n deposits some gold.", ch, NULL, NULL, TO_ROOM );
 return;
}