Naechstes Beispiel.

Change-Id: Ib44b4891bc9ca02d361344e7663ca70fc0fe0208
diff --git a/README b/README
index f196e14..9f4cdba 100644
--- a/README
+++ b/README
@@ -56,6 +56,10 @@
 7. Ein Raum mit einem NPC, der ueber Spells und Resistenzen verfuegt.
   room/huette7.c, npc/zwerg3.c
 8. Ein Raum mit einem NPC, der ein eigenes Defend() definiert.
+  room/huette8.c, npc/zwerg4.c
+9. Ein Raum mit einem NPC, der eine persoenliche Waffe und einen
+   Spezialangriff nutzt.
+  room/huette9.c, npc/zwerg5.c
 
 
 B. Unser erster eigener NPC
@@ -69,6 +73,8 @@
   npc/zwerg3.c
 4. Ein Zwerg mit eigenem Defend().
   npc/zwerg4.c
+5. Ein Zwerg mit eigenem Attack().
+  npc/zwerg5.c
 
 
 C. Unsere ersten eigenen Gegenstaende
@@ -80,3 +86,6 @@
   obj/schild.c
 3. Ein Gegenstand, der weder Waffe noch Ruestung ist.
   obj/krempel.c
+4. Eine Waffe, die ihren Besitzer mehr Schaden macht. Ausserdem ein Beispiel
+   fuer eine Prop, die per Inline-Closure gesetzt wird.
+
diff --git a/npc/zwerg5.c b/npc/zwerg5.c
new file mode 100644
index 0000000..4f69f87
--- /dev/null
+++ b/npc/zwerg5.c
@@ -0,0 +1,67 @@
+inherit "/std/npc";
+
+#include <new_skills.h>
+#include __PATH__(1)"defs.h"
+
+
+private int ausholen;
+
+protected void create() {
+  if (!clonep()) {
+    set_next_reset(-1);
+    return;
+  }
+  ::create();
+
+  create_default_npc(20, 600);
+
+  SetProp(P_SHORT, "Ein angriffslustiger Zwerg");
+  SetProp(P_LONG, BSLF(
+    "Diesmal hat Kawumm eine spezielle Axt, und er greift ab und zu staerker "
+    "an."));
+  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);
+
+  SetProp(P_MURDER_MSG,
+    "He! Ich gehoere doch zu Notstroms Magiertutorial, %s.");
+  /* Wir setzen hier auch mal eine Kill-Message, dieser Zwerg koennte ja
+     sogar mal wen erwischen: */
+  SetProp(P_KILL_MSG,
+    "Kommt davon, wenn man sich an einem Magiertutorial vergreift, %s!");
+  SetProp(P_DIE_MSG, " kippt um wie eine leere Bierflasche.\n");
+
+  AddItem(__PATH__(1)"obj/axt2", REFRESH_NONE|CLONE_WIELD);
+}
+
+/* Ab und zu (20% Chance) startet Kawumm eine starke Attacke, die braucht
+   dann aber ein paar Runden: */
+void Attack() {
+  if (ausholen) {
+    if (ausholen == 1) {
+      mixed waffe = QueryProp(P_WEAPON);
+      string* damtype = ({DT_BLUDGEON});
+      if (waffe) damtype = waffe->QueryProp(P_DAM_TYPE);
+
+      tell_room(ENV(), BSLF(
+        "Kawumm semmelt so richtig feste zu."));
+      enemy->Defend(300, damtype, 0, TO);
+    }
+    --ausholen;
+    return;
+  }
+
+  if (!random(5)) {
+    ausholen = 3;
+    tell_room(ENV(), BSLF(
+      "Kawumm holt mal so richtig weit aus, um dann um so fester "
+      "zuzuschlagen."));
+    return;
+  }
+  ::Attack();
+}
diff --git a/obj/axt2.c b/obj/axt2.c
new file mode 100644
index 0000000..ebfeef2
--- /dev/null
+++ b/obj/axt2.c
@@ -0,0 +1,46 @@
+// Fuer Waffen allgemein bitte "man waffen" lesen!
+inherit "/std/weapon";
+
+#include __PATH__(1)"defs.h"
+
+
+protected void create() {
+  if (!clonep()) {
+    set_next_reset(-1);
+    return;
+  }
+  ::create();
+
+  SetProp(P_SHORT, "Eine besondere Axt");
+  SetProp(P_LONG, BSLF(
+    "Dies ist die Axt von Kawumm, dem Zwerg. Niemand kann so damit zuhauen "
+    "wie er."));
+
+  SetProp(P_NAME, "Axt");
+  SetProp(P_GENDER, FEMALE);
+  AddId(({"axt"}));
+
+  /* Dies ist Kawumms persoenliche Axt, und mit der macht er mehr Schaden als
+     jeder andere. Gleichzeitig ist dies ein Beispiel dafuer, wie man eine
+     Prop mit einer Closure setzt. Da F_QUERY_METHOD angegeben ist, wird die
+     eingebundene Inline-Function jedesmal ausgefuehrt, wenn der Wert von P_WC
+     abgefragt wird, also z.B.  auch bei jedem Attack(). Der umgekehrte Fall
+     waere, wenn wir F_SET_METHOD verwenden, dann wuerde die Inline-Function
+     ausgefuehrt, wenn jemand SetProp(P_WC) aufruft. */
+  Set(P_WC, function int() {
+    if (load_name(ENV()) == __PATH__(1)"npc/zwerg5")
+      return 180;
+    return 100;
+  }, F_QUERY_METHOD);
+
+  SetProp(P_WEAPON_TYPE, WT_AXE);
+  SetProp(P_DAM_TYPE, DT_SLASH);
+  SetProp(P_NR_HANDS, 1);
+
+  SetProp(P_VALUE, 200);
+  SetProp(P_WEIGHT, 3250);
+  SetProp(P_SIZE, 90);
+
+  SetProp(P_MATERIAL, ([MAT_STEEL:100]));
+}
+
diff --git a/room/huette9.c b/room/huette9.c
new file mode 100644
index 0000000..9c3db3a
--- /dev/null
+++ b/room/huette9.c
@@ -0,0 +1,18 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+
+
+protected void create() {
+  ::create();
+
+  SetProp(P_INT_SHORT, "Eine schummrige Huette");
+  SetProp(P_INT_LONG, BSLF(
+    "Und wieder ist der Raum nicht sonderlich interessant."));
+
+  SetProp(P_LIGHT, 1);
+  SetProp(P_INDOORS, 1);
+  SetProp(P_LIGHT_TYPE, LT_GLOWING);
+
+  AddItem(__PATH__(1)"npc/zwerg5", REFRESH_DESTRUCT);
+}