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);
  /* Aehnlich beim Schild: Beim Clonen wird er gleich anzogen
     und bei Verlust nicht ersetzt: */
  AddItem(__PATH__(1)"obj/schild", REFRESH_NONE|CLONE_WEAR);
  AddItem(__PATH__(1)"obj/krempel", REFRESH_NONE);
}

