// Fuer Ruestungen allgemein bitte "man ruestungen" lesen!
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]));
}

