#pragma strict_types
#pragma no_clone

#include "zol_naj.h"
#include "biblioteka.h"
#include <macros.h>

inherit STD_PATH + "war_in.c";

mixed ksiazki = KSIAZKI;

void
create_warownia_room()
{
    set_short ("Biblioteka");
    set_long ("@@opis");
    add_exit (WPATH + "dziedz4.c", "zachod");
    
    add_item (({"regaly", "polki"}), "Regaly wygladaja na napredce zrobione. Zbite " +
              "byle jak z nierownych, chropowatych desek nie sprawiaja najlepszego " +
              "wrazenia. Jedyne za co mozna je pochwalic to, ze jakos spelniaja " +
              "swoje zadanie.\n");

    add_item ( ({"ksiazki", "dziela"}), "Ksiazki, jak ksiazki - choc te tutaj nie " +
              "sa juz w najlepszym stanie. Podarte, zniszczone przez wilgoc i wiek " +
              "nieprzyjemnie pasuja do tego pomieszczenia - zapomniane, na uboczu. " +
              "Tematyka nie jest taka jakiej mozna by sie spodziewac po zolnierskiej " +
              "warowni. Zauwazasz zaledwie kilka tytulow zwiazanych z wojna i " +
              "i taktyka, reszta to zbior przypadkowych dziel - od poezji po jakies " +
              "heretyckie traktaty.\n");

    add_item ("swiece", "Zwykle lojowe swiece, dosc liczne w tym pomieszczeniu. " +
	      "Wypelniaja pokoik nieprzyjemnym zapachem, ale daja na tyle swiatla, " +
	      "ze da sie tu jakos czytac.\n");

    add_item ("fotel", "Spory, ladnie wykonany debowy fotel stojacy przy biurku. " +
	      "Sprawia wrazenie dosyc wygodnego.\n");

    add_item ("biurko", "Duze, debowe biurko, chyba troche nie pasujace do " +
	      "atmosfery panujacej w pomieszczeniu. Kilka ksiazek lezacych na blacie " +
	      "i jeszcze palacy sie swiecznik wskazuja na to, ze ktos niedawno " +
	      "cos tu czytal.\n");

    add_item ("swiecznik", "Bardzo ladny, posrebrzany swiecznik o trzech ramionach " +
	      "stojacy na biurku. Umieszczone w nim swiece daja jeszcze calkiem " +
	      "mocne swiatlo, choc pewnie niedlugo juz zgasna.\n");

    add_item ("sciany", "Grube, kamienne sciany o obronnym charakterze sprawiaja, " +
              "ze w bibliotece jest zimno i wilgotno. Tu i owdzie porosl je mech " +
	      "znalazlszy dobre dla siebie warunki.\n");

    add_item ("tabliczke", "Mala drewniana tabliczka przybita do jednego z regalow." +
	      "Sa na niej instrukcje korzystania z biblioteki.\n");

    add_cmd_item ("tabliczke", "przeczytaj", "Komendy dostepne w bibliotece:\n"+
		  "indeks - lista dostepnych tytulow\nwypozycz <nr> - wypozycz " +
		  "ksiazke o podanym numerze\nzwroc ksiazki - zwraca posiadane " +
		  "przez ciebie ksiazki\n");

    set_event_time (10.0, 90.0);

    add_event ("Jeden z regalow skrzypnal glucho, sprawiajac wrazenie jakby zaraz " +
	       "mial sie rozpasc.\n");

    set_events_on(1);
    // Nie mam pomyslow kurcze :>
}

string
long()
{
    return "Znajdujesz sie w niewielkim pomieszczeniu sluzacym za biblioteke. " +
        "Chyba nie jest to najlepsze miejsce dla ksiazek - wilgotny, ciemny, " +
	"pozbawiony okien pokoik na pewno nie sluzy skladowanym tu dzielom jak i " +
	"czytajacym. Nawet w dzien pala sie tu liczne swiece, probujace rozwiac " +
	"nieprzyjemny polmrok. Miejscowy ksiegozbior wypelnia kilka prowizorycznie " +
	"zbitych regalow ustawionych pod gdzieniedzie omszonymi scianami. Jednakze " +
	"wieksza czesc przestrzeni w pokoiku zajmuja zadziwiajaco elganckie debowe " +
	"biurko i spory fotel - byc moze ktos tu jednak lubi czytac. Z boku regalu " +
	"przy wejsciu przybito jakas tabliczke.\n";
}

void
init()
{
    add_action ("wypozycz", "wypozycz");
    add_action ("zwroc", "zwroc");
    add_action ("indeks", "indeks");
    ::init();
}

int
indeks(string str)
{
    int a;

    write("W indeksie znajdujesz nastepujace ksiazki:\n");
    for (a = 0 ; a < IL_KSIAZEK ; a++)
    {
	write ((a + 1) + ". " + ksiazki[a][0] + "\n");
    }
    return 1;
}

int
wypozycz(string str)
{
    int tmp;
    object ksiazka;

    if (!stringp (str) )
    {
	notify_fail ("Wypozycz <nr ksiazki>.\n");
	return 0;
    }

    if (tmp = atoi(str) > 0)
    {
	if (tmp > IL_KSIAZEK)
	{
	    write("Nie ma ksiazki o takim numerze.\n");
	    return 1;
	}
	else
	{
	    ksiazka = clone_object(ksiazki[tmp - 1][1]);
	    if (ksiazka->move (this_player() ) )
	    {
		write ("Nie mozesz podniesc tej ksiazki.\n");
		ksiazka->remove_object();
		return 1;
	    }
	    
	    write ("Wypozyczyl" + this_player()->koncowka ("es", "as") + 
		   " ksiazke o tytule \"" + ksiazki[tmp - 1][0] + "\". Zwroc " +
		   "ja przed wyjsciem z biblioteki.\n");
	    say (QCIMIE (this_player(), PL_MIA) + " wypozyczyl" + this_player()->
		 koncowka("", "a") + " jakas ksiazke.");
	}
    }
    return 1;
}
    
int
zwroc(string str)
{
    object *oblist = all_inventory (this_player() );
    int a, tmp = 0;
    
    if (str != "ksiazki" && str != "ksiazke")
    {
	notify_fail ("Zwroc co? Ksiazki?\n");
	return 0;
    }
    
    a = sizeof (oblist);
    while (a--)
	if (oblist[a]->query_prop("_biblioteka_zol_naj") )
	{
	    tmp = 1;
	    oblist[a]->remove_object();
	}

    if (tmp)
    {
	write("Zwracasz posiadane ksiazki.\n");
	say (QCIMIE (this_player(), PL_MIA) + " zwraca posiadane ksiazki.\n");
	return 1;
    }

    write ("Nie posiadasz zadnych ksiazek.\n");
    return 1;
}

int
prevent_leave(object ob)
{
    object *oblist = deep_inventory (ob);
    int a;

    a = sizeof (oblist);
    while (a--)
    {
	if (oblist[a]->query_prop("_biblioteka_zol_naj") )
	{
	    ob->catch_msg ("Przed wyjsciem zwroc wypozyczone ksiazki.\n");
	    return 1;
	}
    }
}

      
    
