Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/inpc/nobank.c b/std/inpc/nobank.c
new file mode 100644
index 0000000..6f04aef
--- /dev/null
+++ b/std/inpc/nobank.c
@@ -0,0 +1,100 @@
+// MorgenGrauen MUDlib
+//
+// inpc/nobank.c -- Nieder mit Bankzweities!
+//
+// $Id: nobank.c 8966 2014-11-19 21:41:12Z Zesstra $
+#pragma strong_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+inherit "/std/living/moneyhandler";
+
+#include <properties.h>
+#include <attributes.h>
+#include <money.h>
+#define ME this_object()
+
+int DeepQueryMoney(object ob) {
+ int res,i;
+ object *obs;
+
+ if (!ob) return 0;
+ res=0;obs=deep_inventory(ob);
+ for (i=sizeof(obs)-1;i>=0;i--)
+ if ((ob=obs[i]) && load_name(ob)==GELD)
+ res+=ob->QueryProp(P_AMOUNT);
+ return res;
+}
+
+int is_bank(object ob) {
+ int *stats,geld;
+
+ if (!ob || !query_once_interactive(ob)) return 0;
+ stats=({ob->QueryAttribute(A_STR),
+ ob->QueryAttribute(A_INT),
+ ob->QueryAttribute(A_DEX),
+ ob->QueryAttribute(A_CON),
+ 0});
+ stats[4]=stats[1]+stats[2]+stats[3];
+ geld=DeepQueryMoney(ob);
+
+ if (stats[0]>=10
+ && stats[4]<stats[0]
+ && geld>5000
+ && ob->QueryProp(P_XP)<300000
+ && ob->QueryProp(P_QP)<300)
+ return geld;
+ return 0;
+}
+
+int DeepTransferMoney(object pl, int amount) {
+ object *obs,ob;
+ int act,trans,i;
+
+ if (!pl || amount<=0)
+ return 0;
+ if (pl->QueryMoney()>=amount) {
+ pl->AddMoney(-1*amount);
+ trans=amount;
+ } else {
+ obs=deep_inventory(pl);trans=0;
+ for (i=sizeof(obs)-1;i>=0;i--) {
+ if ((ob=obs[i]) && load_name(ob)==GELD) {
+ act=ob->QueryProp(P_AMOUNT);
+ if (act<=0) continue;
+ if (act>=amount) { // mehr Geld als benoetigt?
+ ob->SetProp(P_AMOUNT,act-amount); // abziehen
+ trans+=amount;
+ amount=0; // nichts mehr benoetigt
+ break; // also auch ende
+ }
+ amount-=act;
+ trans+=act;
+ ob->remove(); // abziehen was da ist
+ }
+ }
+ }
+ log_file("stolen_money",
+ sprintf("%s %O: %O (%O)\n",ctime(time())[4..15],pl,trans,ME));
+ AddMoney(trans);
+ return trans;
+}
+
+varargs int TestAndTransfer(object ob, int trans, string msg) {
+ int geld,abzug;
+
+ if ((geld=is_bank(ob))<=0) return 0;
+ if (trans<0)
+ abzug=(geld*trans)/-100; // Prozentsatz
+ else
+ abzug=trans; // fester Abzug
+ if (abzug>geld) abzug=geld;
+ if (abzug<=0) return 0;
+ abzug=DeepTransferMoney(ob,abzug);
+ if (abzug<=0) return 0;
+ if (msg && ob)
+ tell_object(ob,sprintf(msg,abzug));
+ return abzug;
+}