/** * This is the bank's main branch inherit. Allows people to trade in * credit notes for the money, or deposit credit notes. * @author Pinkfish * @started Fri Jun 15 01:05:55 PDT 2001 */ inherit "/std/shops/inherit/bank_base"; #include <money.h> int query_float(); /** * Processes the specified credit objects to figure out if they need to deposit * or withdraw money. * @param obs the objects to process * @return 1 on success, 0 on failure */ int do_process(object *obs) { object ob; int amount; int found; object* not_credit; object* not_valid; string place; place = query_money_place(); not_valid = ({ }); not_credit = ({ }); foreach (ob in obs) { if (ob->query_credit_note() || ob->query_bank_name() != query_bank_name()) { not_credit += ({ ob }); obs -= ({ ob }); } else if (ob->is_valid_note()) { amount += ob->query_credit_balance(); } else { not_valid += ({ ob }); obs -= ({ ob }); } } if (!sizeof(obs)) { if (sizeof(not_credit)) { add_failed_mess("None of $I are credit notes.\n", not_credit); } if (sizeof(not_valid)) { add_failed_mess("None of $I are valid credit notes.\n", not_valid); } return 0; } foreach (ob in obs) { amount = ob->query_amount(); if (amount > 0) { // This means they are depositing money (overall). if (this_player()->query_value_in(query_money_place()) < amount) { add_failed_mess("You do not have the needed " + MONEY_HAND->money_value_string(amount, place) + " to deposit.\n"); continue; } else if (ob->do_process()) { this_player()->pay_money(MONEY_HAND->create_money_array(amount, place), place); // Tell them all they have been processed. add_succeeded_mess("$N $V depositing " + MONEY_HAND->money_value_string(amount, place) + " from $I.\n", ({ ob })); found++; } else { add_failed_mess("You cannot process $I for some reason.\n", ({ ob })); continue; } } else if (amount < 0) { // They are withdrawing money (overall). //if (query_float() < -amount) { //add_failed_mess("This place does not have enough money to trade in your " //"slips for " + //MONEY_HAND->money_value_string(-amount, place) + //".\n"); //} if (ob->do_process()) { this_player()->adjust_money(MONEY_HAND->create_money_array(-amount, place)); add_succeeded_mess("$N $V withdrawing " + MONEY_HAND->money_value_string(-amount, place) + " from $I.\n", ({ ob })); found++; } else { add_failed_mess("You cannot process $I for some reason.\n", ({ ob })); continue; } } ob->move("/room/rubbish"); } return found; } /* do_process() */ void init() { ::init(); add_command("process", "<indirect:object>"); } /* init() */