/*
* Bank Code - Adapted By Xeroth from Judson Knott's Banking System
*/
#include "include.h"
#include "interp.h"
#include "tables.h"
void do_balance ( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
if (IS_NPC(ch))
return;
sprintf( buf, "You have %ld gold and %ld silver in the bank.\n\r",
ch->pcdata->bankGold, ch->pcdata->bankSilver);
send_to_char( buf, ch );
return;
}
void do_deposit ( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *banker;
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
long amnt;
if (IS_NPC(ch))
return;
if (!IS_SET(ch->in_room->room_flags, ROOM_BANK) )
{
sprintf( buf, "But you are not in a bank.\n\r" );
send_to_char( buf, ch );
return;
}
banker = NULL;
for ( banker = ch->in_room->people; banker; banker = banker->next_in_room )
{
if ( IS_NPC( banker ) && IS_SET(banker->pIndexData->act, ACT_BANKER) )
break;
}
if ( !banker )
{
sprintf( buf, "The banker is currently not available.\n\r" );
send_to_char( buf, ch );
return;
}
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( arg1[0] == '\0' )
{
sprintf( buf, "How much do you wish to deposit?\n\r" );
send_to_char( buf, ch );
return;
}
amnt = atoi( arg1 );
if(!str_cmp (arg2, "gold"))
{
if ( amnt >= (ch->gold + 1) )
{
sprintf( buf, "%s, you do not have %ld gold coins.\n\r", ch->name, amnt );
send_to_char(buf, ch);
return;
}
ch->pcdata->bankGold += amnt;
ch->gold -= amnt;
sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r",
banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver );
send_to_char(buf, ch);
return;
}
if(!str_cmp (arg2, "silver"))
{
if ( amnt >= (ch->silver + 1) )
{
sprintf( buf, "%s, you do not have %ld silver coins.\n\r", ch->name, amnt );
send_to_char(buf, ch);
return;
}
ch->pcdata->bankSilver += amnt;
ch->silver -= amnt;
sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r",
banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver );
send_to_char(buf, ch);
return;
}
sprintf(buf, "Invalid syntax: deposit <amount> <gold/silver>\n\r");
send_to_char(buf, ch);
}
void do_withdraw ( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *banker;
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
long amnt;
if (IS_NPC(ch))
return;
if (!IS_SET(ch->in_room->room_flags, ROOM_BANK) )
{
sprintf( buf, "But you are not in a bank.\n\r" );
send_to_char( buf, ch );
return;
}
banker = NULL;
for ( banker = ch->in_room->people; banker; banker = banker->next_in_room )
{
if ( IS_NPC( banker ) && IS_SET(banker->pIndexData->act, ACT_BANKER) )
break;
}
if ( !banker )
{
sprintf( buf, "The banker is currently not available.\n\r" );
send_to_char( buf, ch );
return;
}
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( arg1[0] == '\0' )
{
sprintf( buf, "How much gold do you wish to withdraw?\n\r" );
send_to_char( buf, ch );
return;
}
amnt = atoi( arg1 );
if(!str_cmp (arg2, "gold"))
{
if ( amnt >= (ch->pcdata->bankGold + 1) )
{
sprintf( buf, "%s, you do not have %ld gold coins in the bank.\n\r", ch->name, amnt );
send_to_char(buf, ch);
return;
}
ch->pcdata->bankGold -= amnt;
ch->gold += amnt;
sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r",
banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver );
send_to_char(buf, ch);
return;
}
if(!str_cmp (arg2, "silver"))
{
if ( amnt >= (ch->pcdata->bankSilver + 1) )
{
sprintf( buf, "%s, you do not have %ld silver coins in the bank.\n\r", ch->name, amnt );
send_to_char(buf, ch);
return;
}
ch->pcdata->bankSilver -= amnt;
ch->silver += amnt;
sprintf( buf, "%s tells you, 'Your account now contains: %ld gold and %ld silver'\n\r",
banker->short_descr, ch->pcdata->bankGold, ch->pcdata->bankSilver );
send_to_char(buf, ch);
return;
}
sprintf(buf, "Invalid syntax: withdraw <amount> <gold/silver>\n\r");
send_to_char(buf, ch);
}