/* Do not remove the headers from this file! see /USAGE for more info. */

private int num_eats = 1;
private int original_eats;
private mixed eat_action = "$N $veat $o.";
private mixed last_eat_action;

string the_short();
void add_save( string array );

void mudlib_setup()
{
  add_save( ({ "num_eats" }) );
}

//:FUNCTION set_eat_action
//set_eat_action(string) causes 'string' to be printed when someone
//eats this object.  set_eat_action(function) causes the function
//to be called instead.
void set_eat_action(mixed action) {
    eat_action = action;
}

//:FUNCTION set_last_eat_action
//Just like set_eat_action, but only is used for the last eat
void set_last_eat_action(mixed action) {
    last_eat_action = action;
}

//:FUNCTION set_num_eats
//num_eats is the number of eats left before the object is empty.
void set_num_eats(int num) {
original_eats = num;
    num_eats = num;
}

int get_num_eats()
{
    return num_eats;
}

int get_original_eats()
{
    return original_eats;
}

mixed direct_eat_obj() {
    if (!num_eats)
	return capitalize(the_short()) + " is gone.\n";

    return 1;
}

void do_eat()
{
    mixed action;

    if( num_eats == 1 )
    {
	if( last_eat_action ) action = last_eat_action;
	else action = eat_action;
	if( stringp( action ))
	    this_body()->simple_action( action, this_object());
	else evaluate( action );
	this_object()->remove();
    }
    else
    {

	if (stringp(eat_action))
	    this_body()->simple_action(eat_action, this_object());
	else
	    evaluate(eat_action);

	num_eats--;
    }
}
