Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/AddCmd/obst.c b/doc/beispiele/AddCmd/obst.c
new file mode 100644
index 0000000..8efb471
--- /dev/null
+++ b/doc/beispiele/AddCmd/obst.c
@@ -0,0 +1,232 @@
+/* Hinweis zu diesem Beispielobjekt: Lebensmittel lassen sich besser von
+ * /std/food ableiten, das bringt viele Funktionalitaeten mit, die man sonst
+ * muehsam selber basteln muss.
+ */
+
+inherit "/std/thing";
+
+#include <moving.h>
+#include <properties.h>
+#include <wizlevels.h>
+
+#define SAETTIGUNG 2
+#define HEILUNG 20
+#define EAT_DELAY 1200 // 20 Minuten
+
+#define BS78(x) break_string(x,78)
+
+protected void create()
+{
+  ::create();
+
+  // Gemeinsamer Teil des create
+  AddId("obst");
+  SetProp( P_VALUE, 60+random(10) );
+
+  // AddCmd( ({"iss","esse"}), "act_essen");  
+  // new style AddCmd
+  AddCmd( "iss|esse&@ID","act_essen","Was willst Du denn essen?");
+
+  // Nach ca. 10 Minuten resetet das Obst, im Reset wird es destructet, 
+  // so spare ich call_outs
+  set_next_reset(600);
+
+  // Name, ID, Gender, Desc und Gewicht sind Abhaengig von der Obstart
+  switch (random(11)){
+  default:
+    SetProp( P_GENDER, MALE );
+    SetProp( P_NAME, "Apfel" );
+    AddId( "apfel" );
+    SetProp( P_SHORT, "Ein Apfel" );
+    SetProp( P_LONG, BS78(
+      "Ein saftiger Apfel. Dir laeuft das Wasser im Munde zusammen."
+    ));
+    SetProp( P_WEIGHT, 80 );
+    break;
+  case 1:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Birne" );
+    AddId( "birne" );
+    SetProp( P_SHORT, "Eine Birne" );
+    SetProp( P_LONG, BS78(
+      "Eine koestliche, reife Birne. Die ist sicher lecker."
+    ));
+    SetProp( P_WEIGHT, 90 );
+    break;
+  case 2:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Banane" );
+    AddId( "banane" );
+    SetProp( P_SHORT, "Eine Banane" );
+    SetProp( P_LONG, BS78(
+      "Die Banane sieht wirklich lecker aus, am besten gleich essen."
+    ));
+    SetProp( P_WEIGHT, 110 );
+    break;  
+  case 3:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Kiwi" );
+    AddId( "kiwi" );
+    SetProp( P_SHORT, "Eine Kiwi" );
+    SetProp( P_LONG, BS78(
+      "Klein und gruen, aber mit leckeren Innenleben. Yam yam."
+    ));
+    SetProp( P_WEIGHT, 50 );
+    break;  
+  case 4:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Erdbeere" );
+    AddId( "erdbeere" );
+    SetProp( P_SHORT, "Eine Erdbeere" );
+    SetProp( P_LONG, BS78(
+      "Eine ueberdurchschnittlich grosse Erdbeere. Sie "
+      "ist sicher suess und saftig."
+    ));
+    SetProp( P_WEIGHT, 20 );
+    break;  
+  case 5:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Kirsche" );
+    AddId( "kirsche" );
+    SetProp( P_SHORT, "Eine Kirsche" );
+    SetProp( P_LONG, BS78(
+      "Zwar nur klein ist diese Kirsche, aber so dunkel wie sie "
+      "aussieht, ist sie sicher total suess und lecker."
+    ));
+    SetProp( P_WEIGHT, 15 );
+    break;  
+  case 6:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Orange" );
+    AddId( "orange" );
+    SetProp( P_SHORT, "Eine Orange" );
+    SetProp( P_LONG, BS78(
+      "Eine grosse, gelbe Orange. Eine von diesen suessen, die sich so "
+      "leicht schaelen lassen und keine Zicken machen, so wie Saftorangen."
+    ));
+    SetProp( P_WEIGHT, 90 );
+    break;  
+  case 7:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Mandarine" );
+    AddId( "mandarine" );
+    SetProp( P_SHORT, "Eine Mandarine" );
+    SetProp( P_LONG, BS78(
+      "Suess und saftig und gesund. So muss das Essen im Paradies "
+      "gewesen sein."
+    ));
+    SetProp( P_WEIGHT, 60 );
+    break;  
+  case 8:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Zitrone" );
+    AddId( "zitrone" );
+    SetProp( P_SHORT, "Eine Zitrone" );
+    SetProp( P_LONG, BS78(
+      "Sauer, sauer und nochmals sauer. Aber ultralecker. Na, sabberst Du "
+      "schon auf die Tastatur?"
+    ));
+    SetProp( P_WEIGHT, 60 );
+    break;  
+  case 9:
+    SetProp( P_GENDER, MALE );
+    SetProp( P_NAME, "Granatapfel" );
+    AddId( "granatapfel" );
+    SetProp( P_SHORT, "Ein Granatapfel" );
+    SetProp( P_LONG, BS78(
+      "Er ist zwar etwas schwieriger, den zu essen, aber der Aufwand "
+      "lohnt sich."
+    ));
+    SetProp( P_WEIGHT, 90 );
+    break;  
+  case 10:
+    SetProp( P_GENDER, FEMALE );
+    SetProp( P_NAME, "Pflaume" );
+    AddId( "pflaume" );
+    SetProp( P_SHORT, "Eine Pflaume" );
+    SetProp( P_LONG, BS78(
+      "Eine grosse, blaue Pflaume. Lass sie Dir doch schmecken."
+    ));
+    SetProp( P_WEIGHT, 20 );
+    break;
+  }
+}
+
+void reset()
+{
+  object env = environment(this_object());
+
+  if (env) {
+    if (query_once_interactive(env)){
+      // Mein Env is ein User
+      tell_object(env, BS78(
+        capitalize(this_object()->name(WER))+" verschwindet mit einem "+
+        "\"PLOPP\" aus deinem Inventar. Da scheint Magie im Spiel zu sein."
+      ));
+    } else if (sizeof(all_inventory(env)&users())){
+      // In meinem Environment sind User (Es ist ein Raum)
+      tell_room(env, BS78(
+        capitalize(this_object()->name(WER))+" verschwindet mit einem "+
+        "\"PLOPP\". Da scheint Magie im Spiel zu sein."
+      ));
+    }
+  }
+
+  // Objekt zerstoeren
+  remove(1);
+}
+
+static int act_essen(string args)
+{
+    // Nur ein Demo-Objekt
+    if (!IS_LEARNING(this_player()))
+    {
+      write("Schwups, nun ist @@name@@ verschwunden. War wohl eine Illusion.");
+      remove(1);
+    }
+
+    // Der Syntaxtest ist unnoetig, der ist schon im new style
+    // AddCmd() eingebaut.
+
+    // Wenn das Objekt ein Environment hat (hoff ich doch)
+    // und das Environment nicht this_player() ist, 
+    // hat der Spieler das Obst nich im Inv - das geht doch nicht ...
+    if (environment(this_object()) && (environment(this_object()) != this_player()) )
+    {
+      write(BS78(
+        "Du solltest "+ this_object()->name(WER,1) + " erstmal nehmen."
+      ));
+      return 1;
+    }
+
+    // DEBUG ("Satt?");
+    if (this_player()->eat_food(SAETTIGUNG))
+    {
+      // DEBUG("Noe!");
+      if (this_player()->check_and_update_timed_key(EAT_DELAY,"vanion_zach_obst")==-1)
+      {
+        write(BS78(
+          "Du isst genuesslich "+this_object()->name(WEN,0)+
+          ". Du fuehlst Dich gestaerkt."
+        ));
+        say(BS78(
+          this_player()->name()+" isst mit vollem Genuss "+this_object()->name(WEN,0)+". "
+          "Dir laeuft das Wasser im Munde zusammen."
+        ));
+        // Heilen und aufessen :)
+        this_player()->heal_self(HEILUNG);
+      }
+      else { // if (check_and_update_timed_key())
+        // Wenn es noch zu frueh ist, wieder welches zu essen
+        // Keine Heilung, aber Saettigung
+        write(BS78(
+          "Du solltest "+this_object()->name(WEN,1)+" lieber jemandem geben, "
+          "den Du magst, statt alles selbst zu futtern, findest Du nicht? "
+          "Deine Gier hat Dir jetzt nur einen vollen Bauch und ein schlechtes "
+          "Gewissen bescheert."
+        ));
+      } // end if (check_and_update_timed_key())
+      if (!remove()) destruct(this_object());
+    } // end of eat_food
+    return 1;
+}