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(), function int(object o) {
    return (!living(o)); });
  if (pointerp(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."));
  }
}
