inherit "/std/thing" ;

#include __PATH__(1)"defs.h"

int cmd_essen();


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

  SetProp(P_SHORT, "Ein kleines Stueck Schokolade");
  SetProp(P_LONG, BSLF(
    "Das Stueck Schokolade ist nicht sehr gross, sieht aber sehr lecker "
    "aus."));
  SetProp(P_INFO, BSLF(
    "Dieses kleine Schokoladenstueck ist essbar und macht dabei nichtmal "+
    "satt. Allerdings heilt sie Dich auch nicht."));
  SetProp(P_NAME, "Schokoladenstueck");

  SetProp(P_GENDER, NEUTER);
  SetProp(P_WEIGHT, 10);
  SetProp(P_VALUE, 0);
  SetProp(P_MATERIAL, ([MAT_CHOCOLATE:100]));
  AddId(({"schoki", "schoko", "schokolade",
          "schokoladenstueck", "schokostueck", "stueck"});

  AddCmd("iss|ess|esse&@ID", #'cmd_essen,
    "Was willst Du essen?|");
}


int cmd_essen() {
  if (ENV()!=TP) {
    tell_object(TP, BSLF(
      "Dazu solltest Du das Schokoladenstueck schon dabeihaben."));
    return 1;
  }

  tell_object(TP, BSLF(
    "Du steckst die Schokolade in den Mund und laesst sie Dir auf der "
    "Zunge foermlich zergehen. Lecker!"));
  tell_room(ENV(TP), BSLF(
    TPNC+" steckt sich ein Stueck Schokolade in den Mund."), ({TP}));
  remove(1);
  return 1;
}

