Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/obj/misc/bonbon.c b/obj/misc/bonbon.c
new file mode 100644
index 0000000..43bf7f5
--- /dev/null
+++ b/obj/misc/bonbon.c
@@ -0,0 +1,102 @@
+// Asrahel
+
+inherit "std/thing" ;
+
+#include <properties.h>
+#include <moving.h>
+#include <defines.h>
+#include <language.h>
+
+void geschmack()
+{
+ int num;
+ num = random (8);
+ switch(num)
+ {
+ case 0 :
+ SetProp(P_SHORT,"Ein Orangenbonbon");
+ SetProp(P_LONG,"Ein gefuelltes Bonbon mit Orangengeschmack.\n");
+ SetProp(P_NAME,"Orangenbonbon");
+ AddId(({"orangenbonbon"}));
+ break;
+ case 1 :
+ SetProp(P_SHORT,"Ein Zitronenbonbon");
+ SetProp(P_LONG,"Ein gefuelltes Bonbon mit Zitronengeschmack.\n");
+ SetProp(P_NAME,"Zitronenbonbon");
+ AddId(({"zitronenbonbon"}));
+ break;
+ case 2 :
+ SetProp(P_SHORT,"Ein Schokoladenbonbon");
+ SetProp(P_LONG,"Ein Schokoladenbonbon, pass auf, dass es nicht schmilzt.\n");
+ SetProp(P_NAME,"Schokoladenbonbon");
+ AddId(({"schokobonbon","schokoladenbonbon"}));
+ break;
+ case 3 :
+ SetProp(P_SHORT,"Ein Pfefferminzbonbon");
+ SetProp(P_LONG,"Pfefferminze befreit den Hals und kitzelt in der Nase.\n");
+ SetProp(P_NAME,"Pfefferminzbonbon");
+ AddId(({"pfefferminzbonbon","minze","pfefferminz"}));
+ break;
+ case 4 :
+ SetProp(P_SHORT,"Ein Sahnebonbon");
+ SetProp(P_LONG,"Sehr suess und sehr klebrig.\n");
+ SetProp(P_NAME,"Sahnebonbon");
+ AddId(({"sahnebonbon"}));
+ break;
+ case 5 :
+ SetProp(P_SHORT,"Ein Karamelbonbon");
+ SetProp(P_LONG,"Ein Karamelbonbon, der Rest von Karneval?\n");
+ SetProp(P_NAME,"Karamelbonbon");
+ AddId(({"karamelbonbon"}));
+ break;
+ case 6 :
+ SetProp(P_SHORT,"Ein Anananasbonbon");
+ SetProp(P_LONG,"Ein dreieckiges Anananasbonbon, das schmeckt bestimmt ganz ananassig.\n");
+ SetProp(P_NAME,"Ananasbonbon");
+ AddId(({"ananasbonbon"}));
+ break;
+ case 7 :
+ SetProp(P_SHORT,"Ein Himbeerdrops");
+ SetProp(P_LONG,"Dieses himbeerige Fruchtbonbon ist viel groesser als eine Himbeere.\n");
+ SetProp(P_NAME,"Himbeerdrops");
+ AddId(({"drops","himbeerdrops","fruchtbonbon"}));
+ break;
+ default :
+ SetProp(P_SHORT,"Ein Multivitaminbonbon");
+ SetProp(P_LONG,"Ein Multivitaminbonbon, sehr gesund (besonders bei dem Wetter in Muenster).\n");
+ SetProp(P_NAME,"Multivitaminbonbon");
+ AddId(({"vitaminbonbon","multivitaminbonbon"}));
+ break;
+ }
+}
+
+void create()
+{
+ if (!clonep(this_object())) return;
+ ::create();
+ SetProp(P_WEIGHT, 25);
+ SetProp(P_VALUE, 0);
+ SetProp(P_GENDER, NEUTER );
+ AddId("bonbon");
+ geschmack();
+}
+
+
+void init()
+{
+ ::init();
+ add_action("essen","esse");
+ add_action("essen","iss");
+ add_action("essen","lutsche");
+}
+
+int essen(string str)
+{
+ notify_fail("Was moechtest Du essen?\n");
+ if ( !str || !id(str) )
+ return 0;
+ write("Du lutschst genuesslich " + name(WEN,0) + ".\n");
+ say( PL->Name(WER,2) + " lutscht " + name(WEN,0) + ".\n");
+ remove();
+ return 1;
+}
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;
+}
+
diff --git a/obj/misc/lolli.c b/obj/misc/lolli.c
new file mode 100644
index 0000000..6b8278e
--- /dev/null
+++ b/obj/misc/lolli.c
@@ -0,0 +1,29 @@
+inherit "std/thing";
+#include <properties.h>
+#include <language.h>
+
+void create()
+{
+ // Laeden erwarten Short und Value in der Blueprint.
+ SetProp(P_SHORT, "Ein Lolli");
+ SetProp(P_VALUE, 5);
+
+ if (!clonep(this_object())) return;
+ ::create();
+ SetProp(P_SHORT, "Ein Lolli");
+ SetProp(P_NAME, "Lolli");
+ SetProp(P_GENDER, MALE);
+ SetProp(P_LONG, "Ein leckerer Lolli, Du kannst ihn schlecken.\n");
+ AddId("lolli");
+ SetProp(P_WEIGHT, 10);
+ AddCmd( ({"schleck","schlecke","leck","lecke"}), "schleck" );
+}
+
+int schleck(string str)
+{
+ notify_fail("Was moechtest Du schlecken?\n");
+ if (!str || !id(str)) return 0;
+ write("Du schleckst an Deinem Lolli. Er schmeckt ausgezeichnet.\n");
+ say(this_player()->name()+" schleckt an "+this_player()->QueryPossPronoun(this_object(), WEM)+" Lolli.\n");
+ return 1;
+}
diff --git a/obj/misc/tuete.c b/obj/misc/tuete.c
new file mode 100644
index 0000000..e7173bd
--- /dev/null
+++ b/obj/misc/tuete.c
@@ -0,0 +1,47 @@
+//Asrahel
+
+inherit "std/thing" ;
+
+#include <properties.h>
+#include <moving.h>
+#include <defines.h>
+#include <language.h>
+
+void create()
+{
+ if (!clonep(this_object())) return;
+ ::create() ;
+
+ SetProp( P_SHORT, "Eine Tuete Bonbons" ) ;
+ SetProp( P_LONG, "Eine magische Bonbontuete. So oft Du auch hineingreifst, sie wird niemals leer\n"
+ + "und enthaelt immer eine bunte Mischung.\n");
+
+ SetProp( P_WEIGHT, 0 ) ;
+ SetProp( P_NOBUY, 1) ;
+ SetProp( P_NODROP, "Nein, Du willst doch nicht dieses Geschenk weggeben !?\n");
+ SetProp( P_NEVERDROP, 1) ;
+ SetProp( P_NAME, "Tuete") ;
+ SetProp( P_GENDER, FEMALE ) ;
+ AddId( ({ "bonbontuete","tuete", "bonbons" }) ) ;
+ SetProp(P_AUTOLOADOBJ, 1);
+
+}
+
+void init()
+{
+ ::init();
+ add_action("naschen","greife");
+ add_action("naschen","greif");
+}
+
+int naschen (string str)
+{
+ notify_fail("Wohinein moechtest Du greifen ?\n");
+ if ( str != "tuete" && str != "in tuete" && str != "bonbons" && str != "in bonbontuete")
+ return 0;
+ write("Du greifst in Deine Tuete und holst ein Bonbon heraus.\n");
+ say( PL->name(WER,2) + " holt ein Bonbon aus einer Tuete.\n");
+ clone_object("obj/misc/bonbon")->move(PL);
+ return 1;
+}
+
diff --git a/obj/misc/wuerfel.c b/obj/misc/wuerfel.c
new file mode 100644
index 0000000..d5ccb69
--- /dev/null
+++ b/obj/misc/wuerfel.c
@@ -0,0 +1,30 @@
+inherit "std/thing";
+
+#include <language.h>
+#include <properties.h>
+
+void create()
+{
+ // Short und Value werden von Laeden in der Blueprint erwartet
+ SetProp(P_SHORT, "Ein Wuerfel");
+ SetProp(P_VALUE, 1);
+
+ if (!clonep(this_object())) return;
+ ::create();
+ SetProp(P_LONG, "Ein Wuerfel mit 6 Seiten.\n");
+ SetProp(P_NAME, "Wuerfel");
+ SetProp(P_GENDER, MALE);
+ SetProp(P_WEIGHT, 1);
+ AddId("wuerfel");
+ AddCmd("wuerfel","wuerfel");
+}
+
+int wuerfel(string str)
+{
+ int zahl;
+
+ zahl = random(6) + 1;
+ write("Du wuerfelst eine " + zahl + ".\n");
+ say(this_player()->name() + " wuerfelt eine " + zahl + ".\n");
+ return 1;
+}