diff --git a/sys/food.h b/sys/food.h
new file mode 100644
index 0000000..085c6cb
--- /dev/null
+++ b/sys/food.h
@@ -0,0 +1,198 @@
+// MorgenGrauen MUDlib
+//
+// /sys/food.sys  - Defines und Prototypen fuer Lebensmittel
+//
+// $Id: food.h 7702 2010-10-26 21:22:37Z Zesstra $
+
+#ifndef _FOOD_H_
+#define _FOOD_H_
+
+#include <properties.h>
+
+// Fuellgrad pro Portion Essen (defined in life.h)
+// #define   P_FOOD
+
+// Fuellgrad pro Schluck des Getraenkes (defined in life.h)
+// #define   P_DRINK
+
+// Menge an Alkohol, die die Speise pro Portion hat (defined in life.h)
+// #define   P_ALCOHOL
+
+// Heilwirkung der Speise (defined in life.h)
+// #define   P_SP
+// #define   P_HP
+
+// Gewicht pro Portion (defined in restrictions.h)
+// in P_EMPTY_PROPS ist es das Gewicht des Behaelters
+// mit beiden Angaben wird das Gewicht immer korrekt berechnet
+// #define   P_WEIGHT
+
+// Wert pro Portion (defined in properties.h)
+// in P_EMPTY_PROPS ist es der Wert des Behaelters
+// mit beiden Angaben wird der Wert immer korrekt berechnet
+// #define   P_VALUE
+
+// Die Meldung, die die Umstehenden erhalten, wenn gegessen/getrunken wird.
+#define   P_CONSUME_MSG        "std_food_consume_msg"
+
+// Die Meldung, die derjenige kriegt, der das Ding isst/trinkt.
+#define   P_EATER_MSG          "std_food_eater_msg"
+
+// Message, wenn man die Speise beim Konsumieren gar nicht in der Hand hat
+// Wenn man die Prop loescht, kann die Speise immer vertilgt werden
+#define   P_ENV_MSG            "std_food_env_msg"
+
+// Die Meldung, wenn die Speise leer ist
+#define   P_EMPTY_MSG          "std_food_empty_msg"
+
+// Die Meldung, wenn Getraenke gegessen werden
+#define   P_NOFOOD_MSG         "std_food_nofood_msg"
+
+// Die Meldung, wenn Speisen getrunken werden
+#define   P_NODRINK_MSG        "std_food_nodrink_msg"
+
+// Die Meldung, wenn die Speise gerade verdirbt
+#define   P_BAD_MSG            "std_food_bad_msg"
+
+// Die Meldung, wenn nichts mehr gegessen werden kann
+#define   P_FOOD_FULL_MSG      "std_food_full_msg"
+// Die Meldung, wenn nichts mehr getrunken werden kann
+#define   P_DRINK_FULL_MSG     "std_food_drink_full_msg"
+// Die Meldung, wenn nichts mehr alkoholisches geht
+#define   P_ALC_FULL_MSG       "std_food_alc_full_msg"
+// Die Meldung, wenn eine verdorbene Speise zerstoert wird
+// wird nur verwendet, wenn P_DESTROY_BAD > 0 ist
+#define   P_REMOVE_MSG         "std_food_remove_message"
+
+// Mapping mit Properties fuer den leeren Behaelter.
+// Alle enthaltenen Properties werden gesetzt, wenn
+// keine Portionen mehr vorhanden sind, bereits in diesen Properties
+// eingetragene Werte werden ueberschrieben!
+// Wenn diese Property nicht gesetzt ist, wird die Speise zerstoert,
+// wenn alle Portionen aufgebraucht ist.
+// Achtung: es werden keine closures unterstuetzt!
+#define   P_EMPTY_PROPS        "std_food_empty_props"
+
+// Wieviele Portionen hat die Speise
+#define   P_PORTIONS           "std_food_portions"
+
+// Verteilung der Heilungsrate pro Portion (siehe H_DISTRIBUTION)
+#define   P_DISTRIBUTION       "std_food_distribution"
+
+// Anzahl der Sekunden, bis die Speise verdorben ist.
+// Es muss ein Wert groesser 0 eingetragen werden.
+// Wenn kein Wert gesetzt wird, verdirbt die Speise beim naechsten Reset
+// Der Timer startet immer erst, wenn ein Spieler die Speise das erste Mal
+// in die Hand bekommt
+#define   P_LIFETIME           "std_food_lifetime"
+// Anzahl der Resets, bis die Speise verdorben ist.
+// P_RESET_LIFETIME und P_LIFETIME sind komplementaer, das heisst, dass
+// beim Setzen der einen die andere automatisch berechnet wird. Man braucht
+// daher nicht beide zu setzen, bzw. sollte dies gar nicht erst tun.
+#define   P_RESET_LIFETIME     "std_food_lifetime_reset"
+
+// Flag, ob die Speise verdirbt
+// Standard: 0 -> Darf nur mit Balancegenehmigung geaendert werden!
+#define   P_NO_BAD             "std_food_no_bad"
+
+// Zeit in Sekunden, wann die Speise nach dem Schlechtwerden zerstoert wird.
+// wenn P_EMPTY_PROPS gesetzt ist, wird der Behaelter geleert.
+// Standard: -1 = sofort beim Schlechtwerden
+//            0 = wird nicht zerstoert
+//           >0 = Anzahl der Sekunden
+#define   P_DESTROY_BAD        "std_food_destroy_bad"
+#define   DESTROY_NEVER         0
+#define   DESTROY_BAD          -1
+
+//============================================================================
+// Kompatibilitaetscode
+#define   F_IS_FOOD            "old_is_food"
+#define   F_IS_DRINK           "old_is_drink"
+#define   F_IS_FULL            "old_is_full"
+#define   F_MESSAGE            "old_mess"
+#define   F_EATER              "old_eater"
+#define   F_EMPTY_CONTAINER    "old_empty_con"
+#define   F_EMPTY_GENDER       "old_empty_gender"
+#define   F_EMPTY_ID           "old_empty_id"
+#define   F_EMPTY_LONG         "old_empty_long"
+#define   F_ALC                "old_alc"
+#define   F_LIQUID             "old_water"
+#define   F_FOOD_SIZE          "old_food_size"
+#define   F_POTION             "old_potion"
+#define   F_HEAL_SP            "old_heal_sp"
+#define   F_HEAL_HP            "old_heal_hp"
+#define   F_NO_CONTAINER       "old_no_con"
+#define   F_BAD                "old_bad"
+#define   F_POISON             "old_poison"
+
+#endif // _FOOD_H_
+
+#ifdef NEED_PROTOTYPES
+#ifndef _FOOD_H_PROTOTYPES_
+#define _FOOD_H_PROTOTYPES_
+
+public int cmd_eat(string str);
+public int cmd_drink(string str);
+public int is_eatable();
+public int is_drinkable();
+public int is_not_empty();
+public int is_bad();
+
+// Anzahl der Sekunden, die das Lebensmittel bereits hinter sich hat,
+// seit es mit einem Spieler in Beruehrung kam
+// wenn 0 zurueckgegeben wird, ist der Timer zum Schlechtwerden noch nicht
+// gestartet worden
+public int get_current_lifetime();
+
+// Startet den Timer zum Verderben der Speise, falls keine Gruende dagegen
+// sprechen, wird von init() und NotifyMove aufgerufen, kann in speziellen
+// Situationen aber auch manuell aufgerufen werden (siehe man food)
+public void start_lifetime();
+
+// wird aufgerufen, wenn die Speise verdorben ist und die Zeit aus
+// P_DESTROY_BAD abgelaufen ist
+// return 1, falls Objekt zerstoert wird, sonst 0
+public int make_destroy();
+
+// wird aufgerufen, wenn die Speise gerade verdirbt
+// return 1, falls Objekt dabei zerstoert wird, sonst 0
+public int make_bad();
+
+// wird aufgerufen, sobald die letzte Portion gegessen/getrunken wurde
+// Falls P_EMPTY_PROPS 0 ist, wird das Objekt zerstoert
+// return 1, falls Objekt dabei zerstoert wird, sonst 0
+public int make_empty();
+
+// wird jedesmal aufgerufen, wenn eine verdorbene Speise konsumiert wird.
+// Als Argument wird das Mapping uebergeben, das consume() im Lebewesen
+// uebergeben werden soll. Dieses Mapping kann veraendert werden.
+// Standard: Die Heilwirkung wird entfernt und stattdessen wird das Lebewesen
+//           vergiftet.
+protected void consume_bad(mapping entry_info);
+
+// wird aus cmd_eat und cmd_drink aufgerufen und fuehrt das Konsumieren durch
+protected int consume();
+// wird aus consume() aufgerufen und fuehrt das Konsumieren durch
+// ist ausgelagert, damit man das testflag bei Bedarf nutzen kann
+protected varargs int try_consume(int testonly);
+
+// Futtern hat geklappt
+protected void success_consume();
+// Futtern hat nicht geklappt (leerer Behaelter ist hier kein Grund!)
+// Wird aus try_consume() gerufen.
+// reason entspricht dem Rueckgabewert von consume() im Lebewesen.
+protected void failed_consume(int reason);
+
+// Methode, die Meldungen zu Statusaenderungen verarbeitet und korrekt ausgibt.
+// Es wird der Name der auszugebenen Property uebergeben.
+// Es werden alle notwendigen Ersetzungen per replace_personal gemacht und
+// geprueft, ob dem Besitzer oder dem Raum die Meldung ausgegeben werden
+// muss.
+// Hierueber sollten nur Meldungen ausgegeben werden, die durch Aenderungen
+// an der Speise im Reset ausgeloest werden, also im reset selbst und in den
+// make_*-Methoden.
+protected void message(string prop);
+
+#endif // _FOOD_H_PROTOTYPES_
+#endif // NEED_PROTOTYPES
+
