Neues Beispiel.
diff --git a/README b/README
index 947ea31..747d85b 100644
--- a/README
+++ b/README
@@ -82,6 +82,8 @@
   einen Behaelter. Gleichzeitig ein Beispiel fuer filter() mit Inline-Closure
   und fuer bewegen eines Arrays Gegenstaende.
   room/huette16.c, obj/kiste.c
+17. Ein Beispiel fuer eine Tanke mit Timed Keys.
+  room/huette17.c
 
 
 B. Unser erster eigener NPC
diff --git a/room/huette17.c b/room/huette17.c
new file mode 100644
index 0000000..d3057d2
--- /dev/null
+++ b/room/huette17.c
@@ -0,0 +1,96 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+
+int cmd_obst();
+
+
+protected void create() {
+  ::create();
+
+  SetProp(P_INT_SHORT, "Eine Huette mit Obst");
+  SetProp(P_INT_LONG, BSLF(
+    "Die Huette ist irgendwie beleuchtet, aber das ist es nicht, was "
+    "Deine Aufmerksamkeit fesselt. Auf dem Tisch, der in der Mitte des "
+    "Raumes steht, befindet sich eine Schale voller Obst. Das sieht "
+    "wirklich appetitlich aus, Du moechtest es direkt essen."));
+
+  SetProp(P_LIGHT, 1);
+  SetProp(P_INDOORS, 1);
+  SetProp(P_LIGHT_TYPE, LT_GLOWING);
+
+  AddCmd("iss|ess|esse&obst", #'cmd_obst,
+    "Wen oder was willst Du essen?^");
+}
+
+
+/*
+  Sollverhalten der Tanke:
+  Alle 40 min pro Spieler je 100+random(60) Food und Drink tanken, dabei
+  Ticks von 12 LP/KP. Saettigung nur 5 Food.
+*/
+
+/*
+  Anmerkung:
+  Es ist guter Stil, in einem Kommentar vor dem Code der Tanke zu
+  dokumentieren, welche Werte Du mit dem Erzmagier der Heilungsbalance
+  ausgehandelt hast.
+
+  Dies sind exakt die Werte, die die Tanke am Bergpfad oberhalb von
+  Kobayashis Seilbahnstation verwendet. Sprich Deine Tanken auf jeden
+  Fall mit dem Erzmagier, der fuer die Heilungsbalance zustaendig ist, ab.
+  (Das ist momentan Humni, falls sich das aendert, weiss Dein Sponsor das
+  aber.)
+
+  Generell solltest Du fuer Heilungsangelegenheiten die Manpage wiz/heilung
+  lesen.
+*/
+int cmd_obst() {
+  /* 
+     Allgemeiner Hinweis zum Arbeiten mit Timed Keys und Heilstellen:
+
+     Als erstes solltest Du bitte die Manpages zu check_timed_key() und
+     check_and_update_timed_key() nachlesen.
+     Wir haben hier einen Sonderfall: Wir wollen nur Heilung alle 40
+     Minuten erlauben, UND wir wollen nicht, dass der Spieler erst wieder
+     40 Minuten warten muss, wenn er dieses Mal nichts essen kann, weil
+     er gerade ueberfressen ist. Deshalb pruefen wir erst den Key, bevor
+     wir "wie ueblich" mit check_and_timed_key() arbeiten.
+
+     Wenn der Spieler auch die Wartezeit aufgebrummt bekommen soll, falls
+     er gerade ueberfressen ist, dann sollte man so vorgehen wie in dem
+     Beispiel der Manpage.
+  */
+
+  /*
+     Da der Timed Key ueber das ganze Mud eindeutig sein muss, empfiehlt
+     es sich, den eigenen Magiernamen darin zu verwenden. Gute Praxis ist
+     es, wenn Du etwas wie "Magiername_Gebiet_Stelle" verwendest, dann
+     kommst Du auch mit Deinen eigenen Timed Keys nicht durcheinander.
+  */
+
+  // Beim Ueberpruefen nicht Key setzen, TP koennte ja vollgefuttert sein:
+  if (TP->check_timed_key("notstrom_tutorial2018_obst")==0) {
+    if (TP->eat_food(5, 0,
+          "Du bist schon so vollgefuttert, dass nichtmal mehr etwas "
+          "Obst geht.")) {
+      // Returnwert wurde bereits oben geprueft:
+      TP->check_and_update_timed_key(2400, "notstrom_tutorial2018_obst");
+      TP->buffer_hp(100+random(60), 12);
+      TP->buffer_sp(100+random(60), 12);
+
+      tell_object(TP, BSLF(
+        "'Esst Obst, und Ihr bleibt gesund', sagten sie. Jetzt hast Du "
+        "schon so viel Obst gegessen, und Dir wird immer schlechter ..."));
+      tell_room(TO, BSLF(
+        TPN+" etwas mampft Obst aus der Schale."),
+        ({TP}));
+    }
+  } else {
+    tell_object(TP, BSLF(
+      "Du bist bereits absolut gemaestet, Du bringst keinen Bissen mehr "
+      "herunter. Vielleicht ein andermal ..."));
+  }
+  return 1;
+}
+