Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/trading_price.c b/std/trading_price.c
new file mode 100644
index 0000000..4bfc96c
--- /dev/null
+++ b/std/trading_price.c
@@ -0,0 +1,174 @@
+// MorgenGrauen MUDlib
+//
+// trading_price.c -- Preisverhalten von Laeden und Haendlern
+//
+// $Id: trading_price.c,v 3.3 2002/06/09 19:51:40 Tilly Exp $
+#pragma strong_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+#define NEED_PROTOTYPES
+#include <thing/properties.h>
+#include <bank.h>
+
+#undef NEED_PROTOTYPES
+#include <properties.h>
+
+// TODO: langfristig zu private aendern?
+nosave int buyfact, shop_percent_left, mymoney, wantto, last;
+private nosave int wantthresh, maxnum;
+
+varargs int SetTradingData(int money, int factor, int maxobs)
+{
+ if (extern_call() && previous_object() != this_object())
+ log_file("ZENTRALBANK",sprintf("INITIALIZE: %O got (%d,%d,%d) from %O (%O)\n",
+ this_object(), money,factor,maxobs,
+ previous_object(),this_player()));
+
+ if (money < 1000)
+ money = 1000;
+
+ last=wantto=mymoney=money;
+ wantthresh=wantto/2;
+ if (wantthresh < 5000)
+ wantthresh = 5000;
+
+ if (factor < 100)
+ buyfact = 300;
+ else
+ buyfact = factor;
+
+ if (maxobs < 1)
+ maxnum=3;
+ else
+ maxnum=maxobs;
+
+ return mymoney;
+}
+
+void SetBuyFact(int i)
+{
+ buyfact=i*100;
+}
+
+varargs int QueryBuyFact(object client)
+{
+ return buyfact;
+}
+
+int InflateSellValue(int value, int cnt)
+{
+ cnt-=maxnum;
+ if (cnt<0) cnt=0;
+ return value-(value*cnt)/(cnt+25);
+}
+
+int TruncateSellValue(int value)
+{
+ if (value > 500) {
+ value-=500;
+ value = ((1000*value)/(value+1000))+500;
+ }
+ return value;
+}
+
+int ObjectCount(object ob)
+{
+ return objectp(ob); // 0 oder 1
+}
+
+varargs int QueryValue(object ob, int value, object client)
+{
+ value=TruncateSellValue(InflateSellValue(value,ObjectCount(ob)));
+ if (3*value>mymoney)
+ {
+ log_file("LADEN",sprintf("Out of money: %O for %O (%s)\n",this_object(),
+ this_player(),dtime(time())[5..]));
+ value=mymoney/3;
+ }
+ if (value<0) value=0;
+
+ /* Preisverfall von beschaedigtenObjekten gleich hier festlegen */
+
+ if(value && ob->QueryProp(P_DAMAGED))
+ {
+ if(ob->QueryProp(P_WC) || ob->QueryProp(P_AC))
+ {
+ value = (6 * (value / 10));
+ }
+ else
+ {
+ value = (4 * (value / 10));
+ }
+ }
+
+ return value;
+}
+
+varargs int QuerySellValue(object ob, object client)
+{
+ return QueryValue(ob,ob->QueryProp(P_VALUE),client);
+}
+
+varargs int QueryBuyValue(mixed ob, object client)
+{
+ // Mit Runden.
+ return (ob->QueryProp(P_VALUE)*QueryBuyFact(client) + 50)/100;
+}
+
+protected void create()
+{
+ SetProp(P_SHOP_PERCENT_LEFT, 0);
+ SetTradingData(50000,300,3);
+}
+
+protected void create_super() {
+ set_next_reset(-1);
+}
+
+void reset()
+{
+ SetProp(P_SHOP_PERCENT_LEFT, 0);
+
+ if (last/3>mymoney)
+ wantto=wantto*110/100;
+ else
+ if (last/2<mymoney)
+ wantto=wantto*85/100;
+ if (wantto<wantthresh) wantto=wantthresh+500;
+ if (wantto>1500000) wantto=1500000;
+ if (wantto<mymoney)
+ {
+ ZENTRALBANK->PayIn(mymoney-wantto);
+ mymoney=wantto;
+ } else
+ mymoney+=ZENTRALBANK->WithDraw(wantto-mymoney);
+ last=mymoney;
+}
+
+void _add_money(int i) {
+ if (extern_call() && previous_object() != this_object())
+ log_file("ZENTRALBANK",sprintf("%s: TRANSFER: %O got %d from %O\n",
+ strftime("%H:%M"), this_object(), i, previous_object()));
+ mymoney+=i;
+}
+
+int _set_shop_percent_left(int dummy) {
+ return shop_percent_left=ZENTRALBANK->_query_shop_percent_left();
+}
+
+int _query_shop_percent_left() {
+ return shop_percent_left;
+}
+
+int _query_current_money() {
+ return mymoney;
+}
+
+int _query_wantto() {
+ return wantto;
+}
+
+