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

