diff --git a/npc/zwerg3.c b/npc/zwerg3.c
new file mode 100644
index 0000000..19acd89
--- /dev/null
+++ b/npc/zwerg3.c
@@ -0,0 +1,70 @@
+inherit "/std/npc";
+
+#include __PATH__(1)"defs.h"
+
+
+protected void create() {
+  if (!clonep()) {
+    set_next_reset(-1);
+    return;
+  }
+  ::create();
+
+  create_default_npc(20, 600);
+
+  SetProp(P_SHORT, "Ein kaempferischer Zwerg");
+  SetProp(P_LONG, BSLF(
+    "Dieser Zwerg wehrt sich ein wenig. Ausserdem verfuegt er Resistenzen."));
+  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");
+
+
+  /* Der Zwerg ist ein wenig anfaellig gegen satanisches Gebrabbel und
+     Furchtschaden, sehr anfaellig gegen Wasser (und Seife), ein wenig
+     resistent gegen Kaelte und recht resistent gegen Gift. */
+  SetProp(P_RESISTANCE_STRENGTHS,
+    ([DT_UNHOLY:     0.3,
+      DT_TERROR:     0.3,
+      DT_POISON:    -0.5,
+      DT_COLD:      -0.3,
+      DT_WATER:      0.6]));
+
+  // Der Zwerg verfuegt ueber ein paar Spezialangriffe:
+  SetProp(P_SPELLRATE, 80);
+
+  AddSpell(25, 300+random(150),
+           BSLF("Kawumm hat Dir voll aufs Schienbein. AUA!"),
+           BSLF("Kawumm haut @WEM mal so richtig auf das Schienbein. Hoeher "
+                "kommt er ja nicht dran."),
+           ({DT_BLUDGEON}), 0,
+           ([SP_PHYSICAL_ATTACK:1, SP_SHOW_DAMAGE:1]));
+  AddSpell(25, 200+random(100),
+           BSLF("Kawumm klettert auf einen Hocker und verpasst Dir einen "
+                "Kinnhaken."),
+           BSLF("Kawumm steigt auf einen Hocker, reckt sich noch ein Stueck "
+                "und verpasst @WEM einen ordentlichen Kinnhaken."),
+           ({DT_BLUDGEON}), 0,
+           ([SP_PHYSICAL_ATTACK:1, SP_SHOW_DAMAGE:1]));
+  AddSpell(25, 200+random(150),
+           BSLF("Kawumm macht da unten etwas, Deine Fuesse tun auf einmal "
+                "hoellisch weh."),
+           BSLF("Kawumm tritt @WEM mal so richtig auf die Fuesse."),
+           ({DT_BLUDGEON}), 0,
+           ([SP_PHYSICAL_ATTACK:1, SP_SHOW_DAMAGE:1]));
+  AddSpell(15, 500+random(150),
+           BSLF("Kawumm kokelt Dich an."),
+           BSLF("Kawumm haelt eine brennende Fackel in @WESSEN Schritt."),
+           ({DT_FIRE}), 0,
+           ([SP_PHYSICAL_ATTACK:0, SP_SHOW_DAMAGE:0]));
+}
+
