Neues Beispiel.
Change-Id: I7446342fb4a460a31b0adb9dccfbde155360dda0
diff --git a/README b/README
index b476014..baf40e3 100644
--- a/README
+++ b/README
@@ -70,6 +70,9 @@
12. Ein Raum, wo man etwas anfassen kann. Ausserdem enthaelt er Geruch und
Geraeusch.
room/huette12.c
+13. Ein weiteres Beispiel fuer eine dynamische Langbeschreibung, dynamisches
+ Detail. Ausserdem ein NPC, der eine selbstdefinierte Prop benutzt.
+ room/huette13.c
B. Unser erster eigener NPC
@@ -87,6 +90,8 @@
npc/zwerg5.c
6. Ein Zwerg mit einer speziellen Waffe.
npc/zwerg6.c
+7. Ein Zwerg, der eine selbstdefinierte Prop verwendet.
+ npc/zwerg7.c
C. Unsere ersten eigenen Gegenstaende
diff --git a/npc/zwerg7.c b/npc/zwerg7.c
new file mode 100644
index 0000000..4290a3b
--- /dev/null
+++ b/npc/zwerg7.c
@@ -0,0 +1,80 @@
+inherit "/std/npc";
+
+#include <new_skills.h>
+#include __PATH__(1)"defs.h"
+
+#define MYPROP notstrom_tutorial2018_beispiel1
+
+private string look();
+private int hauen();
+
+private mapping hauer = ([]);
+
+protected void create() {
+ if (!clonep()) {
+ set_next_reset(-1);
+ return;
+ }
+ ::create();
+
+ create_default_npc(20, 600);
+
+ SetProp(P_SHORT, "Ein Zwerg");
+ Set(P_LONG, #'look, F_QUERY_METHOD);
+ SetProp(P_NAME, "Kawumm");
+ SetProp(P_ARTICLE, 0);
+ SetProp(P_GENDER, MALE);
+
+ AddId(({"zwerg", "kawumm"}));
+ SetProp(P_ALIGN, 100);
+ SetProp(P_RACE, "Zwerg");
+ SetProp(P_SIZE, 102);
+
+ AddCmd("hau|haue&@ID", #'hauen,
+ "Wen willst Du hauen?");
+}
+
+void reset() {
+ ::reset();
+
+ if (sizeof(hauer)) {
+ tell_room(ENV(), BSLF(
+ "Krawumm vergisst, von wem er schon alles gehauen wurde. Seine "
+ "Blessuren verschwinden wie von Magierhand."));
+ hauer = ([]);
+ }
+}
+
+private string look() {
+ string msg = "Dies ist Krawumm, der Zwerg. ";
+ if (!sizeof(hauer)) {
+ msg += "Niemand hat ihm bisher eins auf die Omme gehauen, obwohl er so "
+ "verfuehrerisch herumsteht.\n";
+ } else {
+ msg += "Er hat schon durchaus was auf die Omme bekommen, und zwar von "+
+ CountUp(hauer)+"\n";
+ }
+ msg += "Wenn Du ihm was draufsemmeln willst, dann versuche einfach:\n"
+ " haue krawumm";
+ return BSLF(msg);
+}
+
+private int hauen() {
+ if (TP->QueryProp(MYPROP)) {
+ tell_object(TP, BSLF(
+ "Aber nicht doch. Du hast Krawumm bereits gehauen."));
+ } else {
+ tell_object(TP, BSLF(
+ "Gut, Du haust also Krawumm welche auf die Omme. Krawumm zuckt kurz, "
+ "steht dann aber unbewegt weiter rum. Er hat sich das aber bestimmt "
+ "gemerkt ..."));
+ tell_room(ENV(), BSLF(
+ TPN+" haut Krawumm eins auf die Omme. Dem scheint das aber nicht viel "
+ "auszumachen. Typisch Zwerg, solange er Alk kriegt, ist er zufrieden."),
+ ({TP}));
+ TP->SetProp(MYPROP, 1);
+ m_add(hauer, getuuid(TP), 1);
+ }
+ return 1;
+}
+
diff --git a/room/huette13.c b/room/huette13.c
new file mode 100644
index 0000000..fde36e4
--- /dev/null
+++ b/room/huette13.c
@@ -0,0 +1,40 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+
+private string look();
+
+
+protected void create() {
+ ::create();
+
+ SetProp(P_INT_SHORT, "Eine schummrige Huette");
+ Set(P_INT_LONG, #'look, F_QUERY_METHOD);
+
+ SetProp(P_LIGHT, 1);
+ SetProp(P_INDOORS, 1);
+ SetProp(P_LIGHT_TYPE, LT_GLOWING);
+
+ AddDetail("spieler", function string() {
+ return TP->long();
+ });
+
+ AddItem(__PATH__(1)"npc/zwerg7", REFRESH_DESTRUCT);
+}
+
+string look() {
+ string msg = "Dies scheint eine Kampfarena zu sein. "
+ object o = present_clone(__PATH__(1)"npc/zwerg7");
+ if (objectp(o)) {
+ string s = o->get_gehauen();
+ if (stringp(s) && s!="")
+ return BSLF(
+ msg + "Der Zwerg, der hier rumsteht, hat von " + s +
+ " auch schon was auf die Omme bekommen.");
+ return BSLF(
+ msg + "Du kannst dem Zwerg, der hier steht, sicher was auf die Omme "
+ "geben.");
+ } else
+ return BSLF(
+ msg + "Es ist aber gerade niemand da.");
+}