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);
}

