inherit "/std/room";

#include __PATH__(1)"defs.h"

private void greeting();
private string* greeted = ({});


protected void create() {
  ::create();

  SetProp(P_INT_SHORT, "Eine schummrige Huette");
  SetProp(P_INT_LONG, BSLF(
    "Du kannst hier im Raum Krempel hinlegen, der wird bei Raumreset in die "
    "Kiste verschoben. Das kannst Du mit\n"
    "  xcall $h->reset()\n"
    "auch provozieren."));

  SetProp(P_LIGHT, 1);
  SetProp(P_INDOORS, 1);
  SetProp(P_LIGHT_TYPE, LT_GLOWING);

  AddItem(__PATH__(1)"obj/kiste", REFRESH_REMOVE);
}

void reset() {
  ::reset();

  object kiste = present_clone(__PATH__(1)"obj/kiste");
  if (!objectp(kiste)) return; // sollte nicht passieren

  object *zeugs = filter(all_inventory(), #'non_living);
  if (arrayp(zeugs) && sizeof(zeugs)) {
    tell_room(TO, BSLF(
      "Der Raum gurgelt, die Kiste ruelpst."));
    zeugs->move(kiste, M_PUT);
  } else {
    tell_room(TO, BSLF(
      "Die Kiste geht diesmal leer aus."));
  }
}
