#include <sys/types.h> #include <time.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include "merc.h" #include "magic.h" void do_deposit (CHAR_DATA * ch, char *argument) { int amount; char arg[MAX_INPUT_LENGTH]; char buf[MAX_INPUT_LENGTH]; char coin_type[MAX_INPUT_LENGTH]; argument = one_argument (argument, arg); argument = one_argument (argument, coin_type); amount = atoi (arg); if (IS_NPC (ch)) return; /* prevent NPC's from depositing */ if (!IS_SET (ch->in_room->room_flags, ROOM_BANK)) { send_to_char ("You can only do that in a bank.\n\r", ch); return; } if (!IS_NPC (ch)) if ((time (NULL) - ch->pcdata->last_fight < 120)) { send_to_char ("The bank teller looks at you suspiciously and tells you 'Come back later'\n\r", ch); return; } if (strcmp (arg, "all") && (arg[0] == '\0' || !is_number (arg) || amount <= 0 || (str_cmp (coin_type, "gold") && str_cmp (coin_type, "silver")))) { send_to_char ("Try deposit <amount> <gold|silver>.\n\r", ch); send_to_char (" or deposit all.\n\r", ch); return; } if (!strcmp (arg, "all")) { ch->pcdata->bank_silver += ch->silver; ch->pcdata->bank_gold += ch->gold; ch->gold = 0; ch->silver = 0; sprintf (buf, "Your balance is %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); return; } if (!str_cmp (coin_type, "silver")) { if (ch->silver < amount) { send_to_char ("You don't have that much silver.\n\r", ch); return; } ch->silver -= amount; ch->pcdata->bank_silver += amount; sprintf (buf, "Your balance is %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); } else { if (ch->gold < amount) { send_to_char ("You don't have that much gold.\n\r", ch); return; } ch->gold -= amount; ch->pcdata->bank_gold += amount; sprintf (buf, "Your balance is %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); } } void do_balance (CHAR_DATA * ch, void *vo) { char buf[MAX_INPUT_LENGTH]; if (IS_NPC (ch)) return; /*prevent NPC's from checking balance */ if (!IS_SET (ch->in_room->room_flags, ROOM_BANK)) { send_to_char ("You can only do that in a bank.\n\r", ch); return; } if (!IS_NPC (ch)) if ((time (NULL) - ch->pcdata->last_fight < 120)) { send_to_char ("The bank teller looks at you suspiciously and tells you 'Come back later'\n\r", ch); return; } sprintf (buf, "Your balance: %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); } void do_withdraw (CHAR_DATA * ch, char *argument) { char buf[MAX_INPUT_LENGTH]; char arg[MAX_INPUT_LENGTH]; char coin_type[MAX_INPUT_LENGTH]; int amount; if (IS_NPC (ch)) { send_to_char ("You can't do that.\n\r", ch); return; } argument = one_argument (argument, arg); one_argument (argument, coin_type); amount = atoi (arg); if (!IS_SET (ch->in_room->room_flags, ROOM_BANK)) { send_to_char ("You can only do that in a bank.\n\r", ch); return; } if (!IS_NPC (ch)) if ((time (NULL) - ch->pcdata->last_fight < 120)) { send_to_char ("The bank teller looks at you suspiciously and tells you 'Come back later'\n\r", ch); return; } if (strcmp (arg, "all") && (arg[0] == '\0' || !is_number (arg) || amount <= 0 || (str_cmp (coin_type, "gold") && str_cmp (coin_type, "silver")))) { send_to_char ("Try withdraw <amount> <gold|silver>.\n\r", ch); send_to_char (" or withdraw all.\n\r", ch); return; } if (!strcmp (arg, "all")) { ch->silver += ch->pcdata->bank_silver; ch->gold += ch->pcdata->bank_gold; ch->pcdata->bank_gold = 0; ch->pcdata->bank_silver = 0; sprintf (buf, "Your balance is %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); return; } if (!str_cmp (coin_type, "silver")) { if (ch->pcdata->bank_silver < amount) { send_to_char ("You don't have that much silver in the bank.\n\r", ch); return; } ch->silver += amount; ch->pcdata->bank_silver -= amount; sprintf (buf, "Your balance is %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); } else { if (ch->pcdata->bank_gold < amount) { send_to_char ("You don't have that much gold in the bank.\n\r", ch); return; } ch->gold += amount; ch->pcdata->bank_gold -= amount; sprintf (buf, "Your balance is %ld gold, %ld silver.\n\r", ch->pcdata->bank_gold, ch->pcdata->bank_silver); send_to_char (buf, ch); } }