/*
  Manchmal moechte man ja einem NPC eine ordentliche Waffe geben, die dann
  aber fuer Spieler nicht so geeignet oder schlicht zu gut waere. In diesem
  Fall ist eine Moeglichkeit, die Waffenwerte abhaengig von demjenigen zu
  setzen, der sie gerade dabeihat.
*/
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]));
}

