Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/obj/misc/kissen.c b/obj/misc/kissen.c
new file mode 100644
index 0000000..33c365b
--- /dev/null
+++ b/obj/misc/kissen.c
@@ -0,0 +1,128 @@
+inherit "std/thing";
+#include <properties.h>
+#include <language.h>
+
+string cstr;  
+
+init()
+{
+  int colour;
+  ::init();
+  colour = random(8);
+  if (colour==0) cstr = "gruenes";
+  if (colour==1) cstr = "rotes";
+  if (colour==2) cstr = "blaues";
+  if (colour==3) cstr = "gelbes";
+  if (colour==4) cstr = "schwarz-weiss-kariertes";
+  if (colour==5) cstr = "orange-pink-gestreiftes";
+  if (colour==6) cstr = "lila-gruen-getuepfeltes";
+  if (colour==7) cstr = "silbergraues";
+  add_action("throw_it","wirf"); 
+  add_action("ww", "ww");
+}
+
+short()
+{
+  return "Ein " + cstr + " Kissen\n";
+}
+
+long()
+{
+  return "Dies ist ein wunderschoenes, " + cstr + " Kissen.\n"+
+          "Du kannst versuchen es zu werfen.\n";
+}
+
+create()
+{
+  ::create();
+  cstr = "von Boing handgenaehtes";
+  AddId("kissen");
+  SetProp(P_WEIGHT, 1);
+  SetProp(P_VALUE, 1);
+  SetProp(P_NAME, "Kissen");
+  SetProp(P_GENDER, 0);
+}
+
+ww(str)
+{
+  if (str)
+    return throw_it("kissen nach "+str);
+  else
+  {
+    object *all, *liv;
+    int i;
+
+    all=all_inventory(environment(this_player()));
+    for (i=0; i<sizeof(all); i++)
+      if (query_once_interactive(all[i]))
+        if (!liv)
+	  liv = ({all[i]});
+        else
+          liv = liv+({all[i]});
+    i = random(sizeof(liv));
+    return throw_it("kissen nach "+lower_case(liv[i]->query_real_name()));
+  }
+}
+
+throw_it(str)
+{
+  int treffer;
+  string werfer_name;
+  string victim_string,werfer_string;
+  string was,at,wen;
+  int fehler;
+  object victim;
+
+  if (!str) return 0;
+  fehler = 0;
+  if (sscanf(str,"%s %s %s",was,at,wen) != 3)
+    fehler = 1;
+  if (!id(was) || at != "nach")
+    fehler = 1;
+  if (fehler)
+  { 
+     notify_fail("Zum Werfen: wirf kissen nach <spielername>\n");
+     return 0;
+  }
+  victim = present(wen,environment(this_player()));
+  if (!victim)
+  { 
+     write("Dieser Spieler ist nicht hier!\n");                                
+     return 1;                                                                 
+  }                                                                           
+  werfer_name = this_player()->name();
+  treffer = random(5);
+  write("Du schmeisst ein Kissen nach " + victim->name(WEM) +".\n");
+  say(werfer_name + " wirft ein Kissen nach " + victim->name(WEM) + ".\n");
+  if (treffer==0)
+  {
+    werfer_string = "Du verfehlst " + victim->name(WEN) + " meilenweit.\n";
+    victim_string = werfer_name + " verfehlt Dich meilenweit.\n";
+    this_object()->move(environment(this_player()));
+  }
+  if (treffer==1)
+  {
+    werfer_string = "Das Kissen streift " + victim->name(WEN)+ " am Ohrlaeppchen.\n";
+    victim_string = "Das Kissen streift Dich am Ohrlaeppchen.\n";
+  }
+  if (treffer==2)
+  {
+    werfer_string = "PAFF! Du triffst " + victim->name(WEN) + " mitten ins Gesicht.\n";
+    victim_string = "PAFF! Das Kissen trifft Dich mitten im Gesicht!\n";
+  }
+  if (treffer==3)
+  {
+    werfer_string = "WUSCH! Das Kissen trifft " + victim->name(WESSEN) + " Bauch mit voller Wucht.\n";
+    victim_string = "WUSCH! Das Kissen fliegt mit voller Wucht gegen Deinen Bauch.\n";
+  }
+  if (treffer==4)
+  {
+    werfer_string =  victim->name() + " versucht wegzurennen, doch das Kissen trifft den Hinterkopf.\n";
+    victim_string = "Du versuchst wegzurennen, aber das Kissen trifft Dich am Hinterkopf.\n";
+  }
+  write(werfer_string);
+  tell_object(victim,victim_string);
+  if (treffer) this_object()->move(victim);
+  return 1;
+}
+