inherit "/std/room";

#include __PATH__(1)"defs.h"

private string look();


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

  SetProp(P_INT_SHORT, "Eine schummrige Huette");
  Set(P_INT_LONG, #'look, F_QUERY_METHOD);

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

  AddDetail("spieler", function string() {
    return TP->long();
  });

  AddItem(__PATH__(1)"npc/zwerg7", REFRESH_DESTRUCT);
}

string look() {
  string msg = "Dies scheint eine Kampfarena zu sein. "
  object o = present_clone(__PATH__(1)"npc/zwerg7");
  if (objectp(o)) {
    string s = o->get_gehauen();
    if (stringp(s) && s!="")
      return BSLF(
        msg + "Der Zwerg, der hier rumsteht, hat von " + s +
        " auch schon was auf die Omme bekommen.");
    return BSLF(
      msg + "Du kannst dem Zwerg, der hier steht, sicher was auf die Omme "
      "geben.");
  } else
    return BSLF(
      msg + "Es ist aber gerade niemand da.");
}
