diff --git a/README b/README
index ad9b425..2c53902 100644
--- a/README
+++ b/README
@@ -18,3 +18,6 @@
 
 1. Ein Zwerg, der nur rumstehen kann.
   npc/zwerg1.c
+2. Ein toll ausgeruesteter Zwerg.
+  npc/zwerg2.c, obj/krempel.c, obj/axt.c, obj/schild.c
+
diff --git a/npc/zwerg2.c b/npc/zwerg2.c
new file mode 100644
index 0000000..a29afa0
--- /dev/null
+++ b/npc/zwerg2.c
@@ -0,0 +1,40 @@
+inherit "/std/npc";
+
+#include __PATH__(1)"defs.h"
+
+
+protected void create() {
+  if (!clonep()) {
+    set_next_reset(-1);
+    return;
+  }
+  ::create();
+
+  create_default_npc(20, 300);
+
+  SetProp(P_SHORT, "Ein ausgeruesteter Zwerg");
+  SetProp(P_LONG, BSLF(
+    "So, dieser Zwerg hat richtig Krempel dabei. Wenn er jetzt noch Details "
+    "und Infos haette, dann waere er schon ein richtig ordentlicher NPC."));
+  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.");
+  SetProp(P_DIE_MSG, " kippt um wie eine leere Bierflasche.\n");
+
+
+  /* Die Axt wird beim Clonen gleich gezueckt. Wenn der Zwerg sie
+     verbummelt ist sie weg und wird im Reset nicht ersetzt: */
+  AddItem(__PATH__(1)"obj/axt", REFRESH_NONE|CLONE_WIELD);
+  // Beim Clonen gleich anziehen:
+  AddItem(__PATH__(1)"obj/schild", REFRESH_NONE|CLONE_WEAR);
+  AddItem(__PATH__(1)"obj/krempel", REFRESH_NONE);
+}
+
diff --git a/obj/axt.c b/obj/axt.c
new file mode 100644
index 0000000..da8c3d5
--- /dev/null
+++ b/obj/axt.c
@@ -0,0 +1,46 @@
+inherit "/std/weapon";
+
+#include __PATH__(1)"defs.h"
+/* #include <combat.h>
+#include <new_skills.h> */
+
+int cmd_iss();
+
+
+protected void create() {
+  if (!clonep()) {
+    set_next_reset(-1);
+    return;
+  }
+  ::create();
+
+  SetProp(P_SHORT, "Eine einfache Axt");
+  SetProp(P_LONG, BSLF(
+    "Eine echte Waffe! Toll! Da Details und Commands wieder genauso "
+    "funktionieren wie in NPCs oder Raeumen, sparen wir uns die hier mal.\n"
+    "Bedenke bei beidem allerdings, dass der Spieler den Gegenstand mit "
+    "sich traegt. Ein Standardverb als Command zu ueberschreiben, kann also "
+    "schnell fuer Frust sorgen, wenn sich das angesprochen fuehlt statt dem "
+    "Verb im Raum. Ebeneso bei Details, man denke an die Decke, die man als "
+    "Questbelohnung von Chilana erhaelt, und die damit jeden Anfaenger in "
+    "den Wahnsinn treibt. Weniger kann also auch hier mehr sein."));
+
+  SetProp(P_NAME, "Axt");
+  SetProp(P_GENDER, FEMALE);
+  AddId(({"axt"}));
+
+  /* Die "Weapon Class" ist der Wumms, den die Waffe hat. Hierfuer unbedingt
+     "man grenzwerte" lesen! */
+  SetProp(P_WC, 120);
+  SetProp(P_WEAPON_TYPE, WT_AXE);
+  SetProp(P_DAM_TYPE, DT_SLASH);
+  SetProp(P_NR_HANDS, 2);
+
+  SetProp(P_VALUE, 200);
+  SetProp(P_WEIGHT, 3250);
+  SetProp(P_SIZE, 90);
+
+  // Hierfuer mal "man materialliste" angucken:
+  SetProp(P_MATERIAL, ([MAT_STEEL:100]));
+}
+
