/* Leider leider liegt der Standard-Behaelter nicht in der Mudlib, sondern
   in einer Region, und ausserhalb eines Repos. Hoffentlich aendert sich
   das bald mal. */
inherit "/d/wueste/durian/behaelter";

#include __PATH__(1)"defs.h"


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

  SetProp(P_SHORT, "Eine grosse Kiste");
  SetProp(P_LONG, BSLF(
    "Du kannst sie oeffnen, schliessen, Sachen hineinlegen oder "
    "herausnehmen. Das Uebliche halt."));

  SetProp(P_NAME, "Kiste");
  SetProp(P_GENDER, FEMALE);
  AddId(({"kiste"}));


  SetProp(P_VALUE, 0);
  SetProp(P_WEIGHT, 14500);
  SetProp(P_SIZE, 300);
  SetProp(P_NOGET, BSLF(
    "Die Kiste wurde auf eine Tube Pattex gestellt, sie ist damit auf ewig "
    "untrennbar mit dem Boden verbunden."));

  SetProp(P_MATERIAL, ([MAT_MISC_WOOD:90, MAT_STEEL:10]));
}

