int
wybuchnij(string str)
{
	object *oblist;
	if (!str || str!="smiechem")
	   return notify_fail("Chyba \"wybuchnij smiechem\"?");
        all("lapie sie obiema rekami za swoj brzuch i wybucha glosnym, "+
	    "donosnym i radosnym smiechem.");
        write("Lapiesz sie obiema rekami za brzuch, wybuchajac glosnym, "+
            "donosnym smiechem.\n");
	return 1;
}

int
podrap(string str)
{
	if (str != "sie po brzuchu")
	   return notify_fail("Poprawna skladnia: hpodrap sie po "+
	      "brzuchu.\n");
	all("drapie sie po swoim wielkim brzuchu, ktory burczy zalosnie "+
	   "domagajac sie kolejnej porcji jadla.");
	write("Drapiesz sie po brzuchu, ktory burczy zalosnie, domagajac sie "+
	   "kolejnej porcji jadla.\n");
	return 1;
}

int
pozdrow(string str)
{
	object *oblist;
	notify_fail("Poprawna skladnia: hpozdrow <kogo>.\n");
	if (!str)
	  return 0;
	oblist=parse_this(str, "%l:"+PL_BIE);
	if (!sizeof(oblist))
	   return 0;
	all2act("pozdrawia", oblist, PL_BIE," tradycyjnym halflindzkim "+
	   "pozdrowieniem: Smacznego!");
	target("pozdrawia cie tradycyjnym halflindzkim pozdrowieniem: "+
	   "Smacznego!", oblist);
	actor("Pozdrawiasz", oblist, PL_BIE, " tradcyjnym halflindzkim "+
	   "pozdrowieniem: Smacznego!");
	return 1;
}

int
ziewnij(string str)
{
	if (str)
	   return notify_fail("Ta komenda nie przyjmuje zadnych "+
	      "argumentow.\n");
	all("ziewa, dyskretnie zaslaniajac usta reka. W jego oczach "+
	   "widzisz tajona chec na krotka, pokrzepiajaca drzemke, "+
	   "niezbedna halflingowi przynajmniej kilka razy dziennie.");
	write("Ziewasz, dyskretnie zaslaniajac usta reka. Czujesz "+
	   "nieprzeparta chec na krotka, pokrzepiajaca drzemke tak potrzebna "+
	   "kazdemu porzadnemu halflingowi przynajmniej pare razy "+
	   "dziennie.\n");	 
	return 1;
}

int
spojrz(string str)
{
	object *oblist;
	notify_fail("Na kogo chcesz spojrzec?\n");
	if (!str)
		return 0;
	oblist=parse_this(str, "'na' %l:"+PL_BIE);
	if (!sizeof(oblist))
	   return 0;
	
	all2act("patrzy na", oblist, PL_BIE," z gleboka, plynaca z "+
	    "doswiadczenia powaga.");
	target("patrzy na ciebie. W "+TP->koncowka("jego","jej")+" oczach "+
	    "widzisz glebokie doswiadczenie wielu zjedzonych posilkow i "+
	    "wielu przyjemnych drzemek.", oblist);
	actor("Patrzysz na",oblist, PL_BIE,", starajac sie zawrzec w swoim"+
	    " spojrzeniu cale doswiadczenie zjedzonych posilkow i "+
	    "przespanych sowicie nocy.");
	return 1;
}

int
modl(string str)
{
	object *oblist;
	notify_fail("Poprawna skladnia: hmodl sie [za kogo].\n");
	if (!str)
		return 0;

	if (str=="sie")
	{
	    all("wznosi oczy do gory, goraco proszac Esmeralde o ochrone "+
		    "przed glodem, chlodem, niewyspaniem i wszystkimi innymi "+
		    "niebezpieczenstwami, czyhajacymi na porzadnych "+
		    "halflingow na szlaku.");
	    write("Wznosisz oczy do gory, goraco proszac Esmeralde o ochrone "+
		    "przed glodem, chlodem, niewyspaniem i wszystkimi innymi "+
		    "niebezpieczenstwami, czyhajacymi na porzadnych "+
		    "halflingow na szlaku.\n");
		return 1;
	}
	
	if (!sizeof(oblist=parse_this(str, "'za' %l:"+PL_BIE)))
	    return 0;
	all2act("wznosi oczy do gory, goraco proszac Esmeralde o ochrone",
		oblist, PL_DOP,
		 " przed glodem, chlodem, niewyspaniem i wszystkimi innymi "+
		"niebezpieczenstwami, czyhajacymi na porzadnych "+
		"wedrowcow na szlaku.");	
	target("wznosi oczy do gory, goraco proszac Esmeralde o ochrone "+
	    "ciebie przed glodem, chlodem, niewyspaniem i wszystkimi innymi "+
		"niebezpieczenstwami, czyhajacymi na porzadnych "+
		"wedrowcow na szlaku.",oblist);
	actor("Wznosisz oczy do gory, goraco proszac Esmeralde o ochrone",
	    	oblist, PL_DOP,
	    	" przed glodem, chlodem, niewyspaniem i wszystkimi innymi "+
		"niebezpieczenstwami, czyhajacymi na porzadnych "+
		"wedrowcow na szlaku.");
	return 1;
}
	  
int
jedzenie(object ob)
{
	return stringp(function_exists("create_food", ob));
}


int
eat_access(object ob)
{ 
    if ((environment(ob) == this_player()) &&
	(function_exists("create_heap", ob) == FOOD_OBJECT) &&
	(ob->query_short()))
	return 1;
    else
	return 0;
}

int
eat_one_thing(object ob)
{
    int am, num, i;

    am = (int) ob->query_amount();
    num = (int) ob->num_heap();

    for (i = 1; i <= num; i++)
    {
        if (ob->query_decayed())
        {
	    if (i == 1)
	    {
		ob->split_heap(1);
	    	return 0;
	    }
	    ob->split_heap(i - 1);
	    return 1;
        }

        if (!this_player()->eat_food(am,1))
        {
	    if (i == 1)
	    {
		ob->split_heap(1);
	    	return 0;
	    }
	    ob->split_heap(i - 1);
	    return 1;
	}
    }

    return 1;
}


public int
zjedz(string str)
{
    object *a, *foods;
    string str2;
/*
 * Test zywcem zerzniety z orginalnej funkcji eat_it.
 * Chcemy miec pewnosc, ze gracz rzeczywiscie zje.
 * Niestety standardowa funkcja od razu wyswietla komunikat,
 * emot pojawial by sie po "Zjdasz ze smakiem ... ".
 * Tutaj przeprowadzamy tylko test, po czym wyswietlamy emota i
 * zwracamy 0, zeby wykonala sie zwykla funkcja jedzaca.
 */
    foods=filter(all_inventory(TP), jedzenie);
    if (member_array(0, foods->query_prop(TEMP_OBJ_ABOUT_TO_DESTRUCT))>-1 ||
	this_player()->query_prop(TEMP_STDFOOD_CHECKED))
    {
	return 0;
    }

    a = CMDPARSE_ONE_ITEM(str, "eat_one_thing", "eat_access");
    if (sizeof(a) > 0)
    {
	write("Siadasz na ziemi i zaczynasz delektowac sie wybornym smakiem "+
	  (str2=COMPOSITE_DEAD(a, PL_DOP)) +". Czujesz bloga przyjemnosc. "+
	  "Chcialbys tak spedzic cale zycie ale wszsytko co dobre, to sie "+
	  "szybko konczy.\n");
	all("siada na ziemi i zaczyna delektowac sie wybornym smakiem "+
	  str2 +". Widzisz bloga przyjemnosc malujaca sie na jego twarzy.");
    }
    return 0; // Zwracamy zero, gdyz chcemy aby wykonala sie standardowa
    	      // funkcja jedzenia. 
}
