Neues Beispiel.
Change-Id: Ib4a1055bbcd21c6bbb4ad6e2b108c22ffabe9c34
diff --git a/README b/README
index e7308e4..4217fd1 100644
--- a/README
+++ b/README
@@ -73,8 +73,11 @@
13. Ein weiteres Beispiel fuer eine dynamische Langbeschreibung, dynamisches
Detail. Ausserdem ein NPC, der eine selbstdefinierte Prop benutzt.
room/huette13.c
-14. Ein Beispiel fuer einen Call_out.
+14. Ein Beispiel fuer call_out().
room/huette14.c
+15. Ein Beispiel mit einem Raum, wo etwas im init() passiert. Gleichzeitig
+ ein weiteres Beispiel fuer call_out().
+ room/huette15.c
B. Unser erster eigener NPC
diff --git a/room/huette15.c b/room/huette15.c
new file mode 100644
index 0000000..25885bb
--- /dev/null
+++ b/room/huette15.c
@@ -0,0 +1,48 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+
+private void greeting();
+private string* greeted = ({});
+
+
+protected void create() {
+ ::create();
+
+ SetProp(P_INT_SHORT, "Eine schummrige Huette");
+ SetProp(P_INT_LONG, BSLF(
+ "In diesem Raum hier ist nichts los. Du kannst also eigentlich einfach "
+ "weitergehen."));
+
+ SetProp(P_LIGHT, 1);
+ SetProp(P_INDOORS, 1);
+ SetProp(P_LIGHT_TYPE, LT_GLOWING);
+}
+
+void reset() {
+ ::reset();
+ /* Bei Raumreset "vergessen" wir, wer alles schon die verzoegerte Meldung
+ bekommen hat, damit man die auch mehrmals erhalten kann, ohne dass man
+ jedesmal von ihr bespammt wird. */
+ greeted = ({});
+}
+
+public varargs void init(object origin) {
+ ::init();
+
+ if (TP &&
+ interactive(TP) &&
+ member(greeted, getuuid(TP)) == -1 &&
+ find_call_out(#'greeting) == -1)
+ call_out(#'greeting, 3);
+}
+
+private void greeting() {
+ /* Wir pruefen hier, ob der Spieler, der den Callout ausgeloest hat,
+ ueberhaupt noch anwesend ist. Wenn der Spieler gestorben ist, ausgeloggt
+ hat oder den Raum verlassen hat, machen wir gar nichts. */
+ if (ENV(TP) == TO)
+ greeted += ({getuuid(TP)});
+ tell_object(TP, BSPS(
+ "Tatsaechlich. In diesem Raum hier ist ueberhaupt nichts los."));
+}