/*
 *  Plik:         l1.c
 *  Autor:        Dushin
 *  Data:         25.08.1998
 *  Last Update:  25.08.1998
 *  Opis:         Korytarz lochow.
 */


#include "/d/Imperium/lakshmi/Witt/zamek.h"
#include "/d/Imperium/sys/alarm.h"

inherit  "/d/Imperium/lakshmi/Witt/std/lochy_std.c";

int krzyk = 0;
object *lista_nietoperzy=({});
int licz;
int czy_jest_nietoperz();


void
create_lochy_room()
{

    add_prop (ROOM_I_LIGHT, 1);
    add_prop (ROOM_I_INSIDE, 1);

    set_short ("Korytarz lochow");
    set_long ("Jestes w miejscu, gdzie zaczynaja sie cele. Tu sa "
        + "wejscia do dwoch. Widzisz drzwi prowadzace do nich. Znad "
        + "glowy dolatuja cie dziwne odglosy. Potykasz sie o nierowno "
        + "polozone plytki. Sa teraz chaotycznie ulozone. Zaczyna ich "
        + "brakowac, az wrescie na wschodzie nie ma ich wogole. "
        + "Odslaniaja chodnik, pelen wglebieni i dziur. "
        + "Sciany sa tu inne. Brakuje wczesniejszych nierownosci. "
        + "Zdaja sie byc "
        + "odporne na wszelkie proby wydostania sie wiezniow z cel.\n");

    add_exit (NPATH + "lochy/l2.c", "wschod");
    add_exit (NPATH + "lochy/l0.c", "zachod");
    add_exit (NPATH + "lochy/c0.c", "polnoc");
    add_exit (NPATH + "lochy/c1.c", "poludnie");

    add_item ("cele","Z tego miejsca nie mozesz obejrzec cel. Widzisz "
        + "ze sa dwie, na polnocy i poludniu. Kiedys wejscia do nich "
        + "bronily mocne drzwi, teraz mozna do nich wejsc swobodnie.\n");
    add_item ("drzwi","Do obydwu cel drzwi sa otwarte. Sa dobrze "
        + "zbudowane. Trudno byloby je zdobyc.\n");
    add_item ("plytki","Kamienne, sredniej wielkosci plytki. W tej "
        + "czesci korytarza polozone sa jedynie w centralno-zachodnej "
        + "czesci posadzki. Dalej zniknely. "
        + "Zastanawiajace jest, czy nie byly polozone, czy je ktos "
        + "wziol. To pytanie zostanie pewnie bez odpowiedzi.\n");
    add_item ("chodnik","Spod brakujacych plytek wylania sie chodnik. "
        + "Jest nierowny. Na nieszczescie podroznikow ma wiele wglebien "
        + "i dziur. Takie pulapki moga byc bardzo nieprzyjemne.\n");
    add_item (({"wglebienia","dziury"}),"Sa wszedzie w chodniku. Jest "
        + "kilka takich, na ktore trzeba bardzo uwazac, by nie zrobic "
        + "sobie krzywdy.\n");
    add_item ("sciany","Sa to kamienne bloki, odzielajace cele od "
        + "korytarzy. Sa bardzo masywne i wytrzymale. Na pewno dobrze "
        + "spelnialy swoje zadanie.\n");
    add_item (({"sufit","sklepienie"}),"Jest to wysokie sklepienie "
        + "wysoko nad glowa. Dostrzec mozna jego nierowna powierzchnie. "
        + "Sprawia wrazenie, ze jest zamieszkale. Krzyk moglby obudzic "
        + "lokatora. Nie warto ryzykowac.\n");
    add_item ("lokatora","Nie mozesz dostrzec nikogo takiego. Moze go "
        + "nie ma, moze jest dobrze ukryty.\n");

    add_cmd_item ("lokatora",({"znajdz","szukaj"}),"@@szuka");
    add_cmd_item ("do gory", "patrz", "@@patrzy");


    set_event_time (50.0, 100.0);
    add_event ("Delikatny pisk dobiega do ciebie od gory. Jaki to "
        + "zierz zamieszkuje te lochy?\nA moze tylko ci sie zdawalo. Moze to tylko "
        + "twoj lek i jego echo.\n");
    add_event ("Sluszysz w oddali trzepotanie wielu skrzydel. "
       + "Nie chcialbys, by ich wlasciciele cie znalezli, "
       + "to mogloby sie skonczyc dla ciebie okrotna "
       + "smiercia. Wycofaj sie z lochu po cichu.\n");
    add_event ("Nad glowa przelatuje ci jakis zwierz. Moze "
       + "oznaczac to, ze nie podaba mu sie twoja obecnosc. "
       + "Zachynasz sie bac.\n");
    add_event ("Czujes jakies nieznaczne poruszenie w powietrzu. "
        + "Jek jaki porywa twoje cialo jest prawdziwy i wielki.\nStraszne "
        + "okolice.\n");
    set_events_on(1);

}

string
szuka()
{
    if (!czy_jest_nietoperz())
        write ("Szukasz wszedzie, ale nie jestes w stanie nic znalesc.\n");
    else
        write ("Nie jest latwo znalesc lokatora w tym miejscu.\n");
    say (QCIMIE(TP, PL_MIA) + " patrzy do gory, widac ze czegos szuka. "
	+ "Nie udaje sie" + TP->koncowka("mu","jej")
	+ " nic znalesc, wiec daje sobie spokoj.\n");
    return "";
}

string
patrzy()
{
    if (!czy_jest_nietoperz())
        write ("Widzisz tylko sufit i nic poza tym.\n");
    else
        write ("Widzisz uczepionego sufitu nietoperza. Wyglada niewinnie, "
            + "ale to okropne zwierze, nie draznij go.\n");
    say (QCIMIE(TP, PL_MIA) + " zadziera glowe do gory.\n");
    return "";
}

void
atakuj()
{
    lista_nietoperzy=object_clones(find_object(NPATH+"nietoperz.c"));
    lista_nietoperzy->atakuj(TP);
    
}

int
krzyczy(string co)
{
    if (++krzyk > 1) //najpierw zwieksza, potem sprawdza ilosc
    {
        if (krzyk > (2 + random(4)))
        {
	    krzyk = -3 + sizeof(lista_nietoperzy);
            atakuj();
            return 0;
        }
        else
            clone_object(NPATH+"nietoperz.c")->move(TO);
        write ("Wystarczy moze tego darcia. Nie wiesz, ze tu moga "
            + "mieszkac jakies zwierzatka.\n");
        say (QCIMIE(TP, PL_MIA) + " drze sie i wydziera. Ucisz "
            + TP->koncowka("go","ja")
            + ", bo przyniesie jeszcze jakies nieszczescie.\n");
        return 0;
    };
    if (!find_object(NPATH+"nietoperz.c"))
       lista_nietoperzy=({});
    else
       lista_nietoperzy=object_clones(find_object(NPATH+"nietoperz.c"));
    
    krzyk++;
    if (sizeof(lista_nietoperzy) < 6)
        clone_object(NPATH+"nietoperz.c")->move(TO);    
    return 0;
}

void
init()
{
    ::init();
    add_action (krzyczy,"krzyknij");
}

int
czy_jest_nietoperz()
{
    if (!find_object(NPATH+"nietoperz.c"))
       lista_nietoperzy=({});
    else
       lista_nietoperzy=object_clones(find_object(NPATH+"nietoperz.c")); 
    
    if (sizeof(lista_nietoperzy))
    {
        return 1;
    }
    return 0;
}

