inherit "/std/effect_shadow";
protected void real_eat(object ob);
protected void do_eat_carrot();
mixed move(mixed dest, string messin, string messout) {
  int ret;
  ret = player->move(dest, messin, messout);
  if (ret == 0) {
    call_out((: do_eat_carrot :), 0);
  }
  return ret;
} /* move() */
protected void do_eat_carrot() {
  object ob;
  foreach (ob in all_inventory(player)) {
    if (ob->query_edible() && (ob->query_name() == "carrot")) {
      call_out((: real_eat :), 1, ob);
    }
  }
} /* do_eat_edible() */
protected void real_eat(object ob) {
  if (ob && player) {
    tell_object(player, "You eat " + ob->the_short() + ".\n");
    tell_room(environment(player), player->one_short() + " eats " +
              ob->the_short() + ".\n", player);
    ob->move("/room/rubbish");
  }
} /* real_eat() */
void event_enter(object ob, string mess, object from) {
  player->event_enter(ob, mess, from);
  if (ob->query_edible() && (ob->query_name() == "carrot")) {
    call_out("real_eat", 2, ob);
  }
} /* event_enter() */
int query_disguised() { return 1; }
string query_determinate(object thing) {
  if (arg())
    return "a ";
  return (string)player->query_determinate(thing);
} /* query_determinate() */
string pretty_short(object thing) {
  if (!arg()) {
    return (string)player->pretty_short(thing);
  }
  if (objectp(thing)) {
    if (creatorp(thing)) {
      return "fluffy pink rabbit ("+ (string)player->query_name() +")";
    }
  }
  return "fluffy pink rabbit";
} /* pretty_short() */
string pretty_plural(object thing) {
  if (!arg()) {
    return (string)player->pretty_short(thing);
  }
  if (objectp(thing)) {
    if (creatorp(thing)) {
      return "fluffy pink rabbits ("+ (string)player->query_name() +")";
    }
  }
  return "fluffy pink rabbits";
} /* pretty_plural() */