/* warzywnik w zamku Wittgenstein
 * Autor: Lakshmi
 * Data: 08.10.98
*/
#include "zamek.h"
#include <macros.h>

inherit STD +"droga_std.c";

#define PLIK_WINOROSLI "/d/Imperium/morley/Lakshmi/roslinka"

void atakuj (object ob);
void winorosl_out();

int Roslinka;

void
create_droga_room()
{
 set_short("Zapuszczony warzywnik\n");
 set_long("Na tym odgrodzonym fragmencie dziedzinca urzadzono kiedys "+
          "niewielki ogrodek warzywny. Teraz wysokie na ponad dwa metry "+
          "mury, otaczajace warzywnik porosniete sa dziwnymi, zielonymi "+
          "pnaczami, przypominajacymi winorosl. Hodowane na grzadkach "+
          "wewnatrz tych murow rosliny byly niegdys zamkowym zapasem "+
          "warzyw i ziol. Jednak w tej chwili wygladaja na "+
	  "takie, ktore predzej zjedza tego, kto do nich podejdzie, "+
	  "niz powedruja na stol w charakterze potraw lub przypraw. W "+
	  "polnocnym rogu warzywnika widzisz zdewastowana szope, "+
	  "jednak mysl o przejsciu miedzy tymi roslinami, aby sie "+
	  "do niej dostac odbiera ci cala odwage.\n");
          
 add_exit(ZAMEK + "dziedziniec10.c","polnocny-wschod", "@@no_way", 0, 0);
  
 add_item(({"mur","mury"}),
            "Jest to ponad dwumetrowej wysokosci kamienny mur. Prawie w "+
            "calosci porasta go dosyc dziwne pnacze.\n");

 add_item(({"pnacze","pnacza","winorosl"}),
            "Jest to paskudny roslinny mutant, ktory dosyc dokladnie oplata mur. Kazda roslina zakonczona jest "+
            "czyms w rodzaju zielonej dloni, przyczepionej do sciany "+
            "wyrostkami, ktore przypominaja przyssawki.\n");

 add_item(({"rosliny","warzywa","ziola"}),
            "Sa to zmutowane rosliny. Niektore nieszkodliwe, inne zas niebezpieczne "+
            "i obdarzone inteligencja. Jednak wszystkie wygladaja paskudnie.\n");
	    
 add_item(({"szope"}),
            "Zdewastowana szopa na narzedzia ogrodnicze. Sama mysl, o podejsciu "+
	    "do niej przez te rosliny napawa cie przerazeniem.\n");

}

void
enter_inv(object ob, object from)
{
    object *inv = all_inventory();
    int a, tmp = sizeof (inv);

    if (interactive(ob))
    {
	for (a = 0 ; a < tmp ; a++ )
	{
	    if (MASTER_OB(inv[a]) == PLIK_WINOROSLI)
	    {
		if (!inv[a]->query_attack())
		{
		    ::enter_inv(ob, from);

		    ob->catch_msg(QCIMIE(inv[a], PL_MIA) + " oplata sie wokol " +
				  "twojej szyji i zaczyna cie dusic.\n");
		    tell_room(this_object(), QCIMIE(inv[a], PL_MIA) + " oplata " +
			      "sie wokol szyji " + QIMIE(ob, PL_DOP) + " i zaczyna " +
			      ob->koncowka("go", "ja") + " dusic.\n", ({ob, inv[a]}));

		    inv[a]->attack_object(ob);

		    return;
		}
	    }
	}

        set_alarm (20.0, 0.0, &atakuj(ob));
        winorosl_out();
        
    ::enter_inv(ob, from);
    }
}

void
atakuj(object ob)
{
    object win;

    if (environment(ob) != this_object() )
	return;

    win = clone_object(PLIK_WINOROSLI);
    win->move(this_object());
    ob->catch_msg(QCIMIE(win, PL_MIA) + " nagle ozywa i oplata sie wokol " +
		  "twojej szyji zaczynajac cie dusic.\n");
    tell_room(this_object(), QCIMIE(win, PL_MIA) + " nagle ozywa i oplata " +
	      "sie wokol szyji " + QIMIE(ob, PL_DOP) + " i zaczynajac " +
	      ob->koncowka("go", "ja") + "dusic.\n", ({ob, win}));
    win->attack_object(ob);
}

int
no_way()
{
    object *inv = all_inventory();
    int a, tmp = sizeof (inv);
    object ob = this_player();
    
    if (interactive(ob))
    {
	for (a = 0 ; a < tmp ; a++ )
	{
	    if (MASTER_OB(inv[a]) == PLIK_WINOROSLI)
		if (inv[a]->query_attack() == ob)
		{
		    ob->catch_msg(QCIMIE(inv[a], PL_MIA) + " mocno trzyma cie " +
				  "za szyje. Nie uda ci sie stad wyjs poki zyje.\n");
		    return 1;
		}
	}
    }
    return 0;
}

void
jest_winorosl()
{
    Roslinka = 1;
}

void
winorosl_out()
{
    Roslinka = 0;
    set_alarm(3600.0, 0.0, &jest_winorosl());
}