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;
+}
+
