Neuer Hook H_HOOK_INIT

Dieser Hook wird von Raeumen zu Beginn des init()
ausgeloest.
Hauptsaechlich dazu gedacht, wenn jemand erfahren
muss, ob ein Raum betreten wurde.
Abbruch des init() per Hook moeglich, aber NICHT
empfohlen!

Change-Id: Id88db103d96ac77750393c53a187364e3a4b0e90
diff --git a/doc/std/hooks b/doc/std/hooks
index de308bd..e828553 100644
--- a/doc/std/hooks
+++ b/doc/std/hooks
@@ -84,6 +84,12 @@
 * H_HOOK_EXIT_USE
   Wird von einem Raum ausgeloest, wenn ein Lebewesen einen Ausgang benutzt.
   Abbruch und Aenderung der Daten des Ausgangs moeglich.
+* H_HOOK_EXIT_USE
+  Wird von einem Raum ausgeloest, wenn init() gerufen wird (d.h. ein Lebewesen
+  den Raum betritt). Hat keine Daten.
+  Abbruch moeglich.
+  ACHTUNG: bei Abbruch von init() sind schwere Bugs moeglich!
+
 
 HOOK-KONSUMENTEN
 ================
diff --git a/std/room.c b/std/room.c
index 29ab503..57fadc8 100644
--- a/std/room.c
+++ b/std/room.c
@@ -32,6 +32,7 @@
 #include <defines.h>
 #include <doorroom.h>
 #include <functionlist.h>
+#include <hook.h>
 
 void reset()
 {
@@ -86,6 +87,7 @@
   exits::create();
   items::create();
   doors::create();
+  offerHook(H_HOOK_INIT, 1);
 
   SetProp(P_NAME,0);
   SetProp(P_NAME_ADJ,({}));
@@ -213,8 +215,9 @@
 void
 init()
 {
+  if (HookFlow(H_HOOK_INIT, 0)[H_RETCODE] == H_CANCELLED)
+      return;
   Set(" clean counter ",2);
-
   exits::init();
   commands::init();
   description::init();
diff --git a/sys/hook.h b/sys/hook.h
index b1e655d..d62cb90 100644
--- a/sys/hook.h
+++ b/sys/hook.h
@@ -23,6 +23,7 @@
 #define H_HOOK_TEAMROWCHANGE  13
 #define H_HOOK_INSERT         14
 #define H_HOOK_EXIT_USE       15
+#define H_HOOK_INIT           16
 
 // the possible consumer types
 #define H_HOOK_SURVEYOR       0