Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/clothing/container_description.c b/std/clothing/container_description.c
new file mode 100644
index 0000000..f7942bc
--- /dev/null
+++ b/std/clothing/container_description.c
@@ -0,0 +1,137 @@
+// MorgenGrauen MUDlib
+//
+// clothing/container_description.c -- clothing_container description handling
+//
+// $Id: container_description.c 6198 2007-02-13 23:39:43Z Zesstra $
+
+#pragma strict_types
+#pragma save_types
+#pragma no_clone
+#pragma pedantic
+#pragma range_check
+
+inherit "/std/thing/description";
+
+#define NEED_PROTOTYPES
+
+#include <thing/properties.h>
+#include <thing/description.h>
+#include <thing/language.h>
+#include <container.h>
+#include <combat.h>
+#include <thing/material.h>
+#include <defines.h>
+#include <wizlevels.h>
+#include <player/base.h>
+
+void create()
+{
+ ::create();
+ SetProp(P_TRANSPARENT, 1);
+ AddId("Container");
+}
+
+string dam_descr()
+{ string re;
+ mixed desc;
+ int maximum,dam,pos;
+
+ if (!QueryProp(P_NAME) || !QueryProp(P_DAMAGED) || !QueryProp(P_SHORT) ||
+ !(desc=QueryProp(P_DAM_DESC)) || (!stringp(desc) && !pointerp(desc)))
+ return "";
+ re = capitalize(name(WER,2))+" ";
+ maximum = QueryProp(P_AC)+(dam=QueryProp(P_DAMAGED));
+ if (stringp(desc))
+ return (dam>(maximum/2))?(re+desc+".\n"):"";
+ pos = (sizeof(desc)*dam/maximum);
+ if (stringp(desc[pos]))
+ return (re+desc[pos]+".\n");
+ return "";
+}
+
+string short()
+{ string s;
+ if(!(s=process_string(QueryProp(P_SHORT))))
+ return 0;
+ return s+(QueryProp(P_WORN)?" (angezogen).\n":".\n");
+}
+
+varargs string long(int mode)
+{ string descr, inv_descr;
+
+ descr=(process_string(QueryProp(P_LONG)||"") + (dam_descr()||""));
+ if (!QueryProp(P_TRANSPARENT))
+ return descr;
+
+ inv_descr = make_invlist(PL, all_inventory(ME), mode );
+ if ( inv_descr != "" )
+ descr += capitalize(QueryPronoun(WER)) + " enthaelt:\n" + inv_descr;
+ return descr;
+}
+
+mapping _query_material() {
+ mixed res,at;
+
+ if (mappingp(res=Query(P_MATERIAL)))
+ return res;
+ at=QueryProp(P_ARMOUR_TYPE);
+ switch(at) {
+ case AT_ARMOUR:
+ case AT_HELMET:
+ case AT_RING:
+ case AT_AMULET:
+ case AT_SHIELD:
+ return ([MAT_MISC_METAL:100]);
+ case AT_CLOAK:
+ case AT_TROUSERS:
+ return ([MAT_CLOTH:100]);
+ case AT_GLOVE:
+ case AT_BOOT:
+ return ([MAT_CLOTH:100]);
+ }
+ return ([MAT_CLOTH:100]);
+}
+
+// flags: 1 - wizard, 2 - don't collect equal objects '
+// flags: 4 - don't append infos for wizards
+private void stringenize(mixed obj, int flags, mixed objs, mixed info)
+{
+ string id, tmp;
+ int idx;
+ tmp = capitalize(obj->short()||"")[0..<2]
+ + (!(flags & 4) && (flags & 1) ? " ["+object_name(obj)+"]" : "");
+ if(flags & 3 || living(obj)) id = object_name(obj);
+ else
+ id = explode(object_name(obj), "#")[0] + tmp;
+ if((idx = member(objs, id)) == -1)
+ {
+ objs += ({ id });
+ info += ({ ({ tmp, 1, obj}) });
+ }
+ else
+ info[idx][1]++;
+}
+
+private string collect(mixed obj)
+{
+ if(!sizeof(obj[0])) return 0;
+ return obj[0] + (obj[1] > 1 ? " ("+obj[1]+")" : "");
+}
+
+// flags: 1 - return array, 2 - don't collect equal objects '
+// flags: 4 - don't append infos for wizards
+varargs mixed make_invlist(object viewer, mixed inv, int flags)
+{
+ int iswiz;
+ mixed objs, info;
+ string descr;
+
+ iswiz = IS_LEARNER( viewer ) && viewer->QueryProp(P_WANTS_TO_LEARN);
+ descr = ""; objs = ({}); info = ({});
+ map(inv, #'stringenize/*'*/, iswiz | (flags & 2) | (flags & 4), &objs, &info);
+ if(flags & 1) return info;
+ inv = map(info, #'collect/*'*/) - ({ 0 });
+ if(!sizeof(inv)) return "";
+ return sprintf("%"+(sizeof(inv) > 6 ? "#" : "=")+"-78s",
+ implode(inv, "\n")) + "\n";
+}