Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/player/restrictions.c b/std/player/restrictions.c
new file mode 100644
index 0000000..d71e14c
--- /dev/null
+++ b/std/player/restrictions.c
@@ -0,0 +1,130 @@
+// MorgenGrauen MUDlib
+//
+// player/restrictions.c -- container aspect of players
+//
+// $Id: restrictions.c 9020 2015-01-10 21:49:41Z Zesstra $
+
+// This is a simple container to put objects in. It defines all functions
+// which are necessary to describe an object which can be filled with
+// other things.
+//
+// It will support restrictions for volume, weight etc.
+//
+// The following properties are defined:
+// P_MAX_WEIGHT - maximum weight which container can carry
+// P_WEIGHT_CONTENTS - current contents
+// P_WEIGHT - builtin property: read->total weight, write->own weight
+//
+// Functions for manipulation of weight
+// MayAddWeight(weight) - Can <weight> be inserted?
+// AddWeight(weight) - Add an amount of <weight>
+//
+// IMPORTANT: unit should be interpreted as grams (g).
+#pragma strong_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+inherit "/std/container/restrictions";
+
+#define NEED_PROTOTYPES
+#include <thing/properties.h>
+#include <hook.h>
+#include <living/skills.h>
+#include <attributes.h>
+#undef NEED_PROTOTYPES
+#include <properties.h>
+#include <wizlevels.h>
+#include <container.h>
+#include <defines.h>
+#include <new_skills.h>
+
+//Liste von Objekten, in denen InsertNotify() gerufen wird, wenn etwas in den
+//Spieler bewegt wurde.
+nosave object *InsertHooks=({});
+
+// local properties prototypes
+static int _query_max_weight();
+static mixed _set_frog(mixed arg);
+
+void create()
+{
+ ::create();
+
+ Set(P_MAX_WEIGHT, NOSETMETHOD, F_SET_METHOD);
+ Set(P_MAX_WEIGHT, SECURED, F_MODE);
+ offerHook(H_HOOK_INSERT, 1);
+}
+
+// **** local property methods
+static int _query_max_weight() {
+ int str,val;
+ mixed ski;
+
+ if (QueryProp(P_GHOST) && !IS_WIZARD(ME))
+ return 0;
+ str=QueryAttribute(A_STR);
+ ski = UseSkill(SK_CARRY, ([SI_SKILLARG : str ]));
+
+ if (!intp(ski))
+ ski = 0;
+
+ if (str<0) {
+ val=9200+str*160+(int)ski;
+ if (val<3000) val=3000;
+ return val;
+ }
+ val = 9200+str*800+(int)ski;
+ if (val<3000)
+ val = 3000;
+ return val;
+}
+
+static mixed _set_frog(mixed arg) {
+ mixed res;
+
+ res=Set(P_FROG,arg);
+ if (res)
+ SetProp(P_ATTRIBUTES_MODIFIER,({"#frosch",([A_STR:-30])}));
+ else
+ SetProp(P_ATTRIBUTES_MODIFIER,({"#frosch",0 }));
+ return res;
+}
+
+public void NotifyInsert(object ob, object oldenv)
+{
+ ::NotifyInsert(ob, oldenv);
+ // Alle Listener im neuen Hooksystem vom InsertHook informieren
+ HookFlow(H_HOOK_INSERT, ob);
+ // Alle Listener im alten InsertHook informieren
+ if (sizeof(InsertHooks))
+ {
+ foreach(object h: &InsertHooks)
+ {
+ if (h && environment(h) == ME)
+ h->InsertNotify(ob);
+ else
+ h=0;
+ }
+ InsertHooks-=({0}); // genullte Elemente loeschen
+ }
+}
+
+void AddInsertHook(object ob)
+{
+ if (member(InsertHooks,ob)!=-1 || environment(ob)!=this_object())
+ return;
+ InsertHooks+=({ob});
+}
+
+void RemoveInsertHook(object ob)
+{
+ InsertHooks-=({ob});
+}
+
+object *QueryInsertHooks()
+{
+ return InsertHooks;
+}
+