Neues Beispiel.
diff --git a/README b/README
index 747d85b..86cfb7b 100644
--- a/README
+++ b/README
@@ -84,6 +84,8 @@
room/huette16.c, obj/kiste.c
17. Ein Beispiel fuer eine Tanke mit Timed Keys.
room/huette17.c
+18. Ein Beispiel fuer eine einfache, kleine Miniquest.
+ room/huette18.c
B. Unser erster eigener NPC
diff --git a/room/huette18.c b/room/huette18.c
new file mode 100644
index 0000000..d3e5302
--- /dev/null
+++ b/room/huette18.c
@@ -0,0 +1,82 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+#include <questmaster.h>
+
+int cmd_hebel();
+
+
+protected void create() {
+ ::create();
+
+ SetProp(P_INT_SHORT, "Eine Huette mit Hebel");
+ SetProp(P_INT_LONG, BSLF(
+ "Diese Huette ist komplett leer. Na sowas. Nur an einer Stelle ragt ein "
+ "Hebel aus der Wand. Ein kleines Schild haengt darunter."));
+
+ SetProp(P_LIGHT, 1);
+ SetProp(P_INDOORS, 1);
+ SetProp(P_LIGHT_TYPE, LT_GLOWING);
+
+ AddDetail("hebel", BSLF(
+ "Da kannst Du dran ziehen."));
+ AddDetail("schild", BSLF(
+ "Das kannst Du lesen (wenn Du lesen kannst.)"));
+
+ AddReadDetail("schild", BSLF(
+ "\"Zum Loesen der Miniquest hier ziehen\".\n"
+ "(Steht da. Was fuer eine Miniquest?)"));
+
+ AddCmd("zieh|ziehe&hebel", #'cmd_hebel,
+ "Wen oder was willst Du @verben?^");
+}
+
+int cmd_hebel() {
+ /* Miniquest erfolgreich absolviert - bitte lies "man GiveMiniQuest".
+ Wenn Du in Deinem Code pruefen willst, ob der Spieler die Miniquest
+ bereits absolviert hat, lies bitte "man HasMiniQuest". */
+ int err = QM->GiveMiniQuest(TP);
+
+ /* Fuer die Infos, die der Questerzmagier zum Eintragen Deiner Miniquest
+ braucht, lies bitte "man AddMiniQuest". Du kannst ihm normalerweise
+ einfach eine Mail schreiben, die Eintraege fuer alle Argumente auf
+ der Manpage enthaelt. */
+
+ if (err == 1) {
+ SetProp(P_NAME_ADJ, 0);
+ SetProp(P_ARTICLE, 0);
+ SetProp(P_NAME, "Ein Hebel");
+
+ // Ausgaben auf der Abenteuer-Ebene:
+ CHMASTER->join("Abenteuer", TO);
+ CHMASTER->send("Abenteuer", TO,
+ sprintf("Juchu! Ich werde doch so gern gezogen! Danke, %s!", TPN),
+ MSG_SAY);
+ CHMASTER->leave("Abenteuer", TO);
+ } else {
+ string msg;
+ switch (err) {
+ case -1:
+ msg = "Du hattest die Miniquest bereits zuvor geloest.";
+ break;
+ case -2:
+ case -4:
+ /* Diese Meldung sollte hier nicht ueberraschen, denn dieses
+ Beispiel ist hoffentlich nicht im Questmaster eingetragen: */
+ msg = "Seltsam. Die Miniquest scheint nicht eingetragen zu sein.";
+ break;
+ case -5:
+ msg = "Du bist mit einem Gastspieler eingeloggt. Gastspieler "+
+ "bekommen keine Miniquests gutgeschrieben. Hat es trotzdem "+
+ "Spass gemacht?";
+ break;
+ default:
+ msg = "Irgendetwas ist schiefgegangen. Ein Magier waere vermutlich "+
+ "sehr daran interessiert, was Du gemacht hast. Bitte sei so "+
+ "nett und verstaendige einen. Danke!";
+ }
+ tell_object(TP, BSLF(msg));
+ }
+ return 1;
+}
+