inherit "/std/armour";

#include __PATH__(1)"defs.h"


protected void create() {
  if (!clonep()) {
    set_next_reset(-1);
    return;
  }
  ::create();

  SetProp(P_SHORT, "Ein billiger Schild");
  SetProp(P_LONG, BSLF(
    "Dieser Schild sieht irgendwie komisch aus. Das muss er auch, denn im "
    "Morgengrauen sind Schilde aus technischer Sicht Ruestungen. Deswegen "
    "auch das Beispiel hier ..."));

  SetProp(P_NAME, "Schild");
  SetProp(P_GENDER, MALE);
  AddId(({"schild"}));

  // Auch fuer P_AC unbedingt "man grenzwerte" lesen!
  SetProp(P_AC, 20);
  // Hier hilft "man schadenstypen":
  SetProp(P_DAM_TYPE, DT_BLUDGEON); // fuer Schildstoss der Kaempfer
  SetProp(P_NR_HANDS, 1);

  SetProp(P_VALUE, 200);
  SetProp(P_WEIGHT, 4020);
  SetProp(P_SIZE, 110);

  // Fuer die Materialien "man materialliste" lesen:
  SetProp(P_MATERIAL, ([MAT_STEEL:100]));
}

