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;
}

