#pragma strict_types
#pragma no_clone

#include "zol_naj.h"
#include <macros.h>

inherit STD_PATH + "war_out.c";

int Brama = 1;

void
create_warownia_room()
{
    set_short ("Trakt przed brama");
    set_long ("@@opis");
    add_exit (WPATH + "brama.c", ({"polnoc", "przez brame na polnoc"}), 
	      "@@brama_oz", 1, "@@query_brama");

    add_item (({"mury", "mur"}), "Z bliska mur wyglada znacznie solidniej niz z " +
              "kilkudziesieciu metrow. U podstawy szeroki na ladnych pare stop i " +
              "wysoki na conajmniej kilkanascie musi stanowic solidna ochrone przed " +
              "jakims niespodziewanym atakiem.\n");

    add_item (({"brame", "wrota"}), "@@wrota");

    add_item (({"trakt", "droge"}), "Zapewne niegdys brukowany trakt w tej chwili " +
              "jest w nienajlepszym stanie. Czesc kamieni zapadla sie, inne zostaly " +
              "w jakis sposob wyrwane i wyrzucone na bok. W tej chwili podroz wozem " +
              "po tej drodze nie moze na lezec do przyjemnych.\n");

    add_item (({"flage", "slup", "maszt"}), "Na wysokim maszcie zawieszono flage " +
              "Wolnej Kompanii Stirlandu - <costam costam jeszcze nie wymyslilem>.\n");

    set_event_time (45.0, 90.0);

    add_event ("Gdzies zza muru slychac krzyki rozkazow.\n");

    add_event ("Kilku zolnierzy przeszlo traktem z poludnia i zniknelo w bramie.\n");

    add_event ("Gdzies na murze zamajaczyla na chwile glowa gwardzisty.\n");

    add_event ("Jakis wiesniak bezskutecznie dobija sie do wrot, probujac dostac " +
	       "sie do warowni.\n");
    
    add_event ("Bardzo powoli przetacza sie traktem woz z zaopatrzeniem dla " +
	       "jednostki.\n");

    set_events_on(1);
}

string
opis()
{
    return "Stoisz na zewnatrz bramy warowni Wolnej Kompanii Stirlandu. Od siedziby " +
	"tej oslawionej jednostki oddzielaja cie juz tylko potezne drewniane wrota " +
	"i wyzszy nizby sie moglo zdawac z daleka kamienny mur. Widac stad wyraznie " +
	"powiewajaca na wietrze flage zawieszona na wysokim slupie ustawionym gdzies " +
	"wewnatrz tej niewielkiej fortecy. Choc nie dostrzegl" + this_player()->
	koncowka("es", "as") + " zadnych oznak zycia masz niemile wrazenie, ze jestes " +
	"obserwowan" + this_player()->koncowka("y", "a") + ". Trakt prowadzi stad juz " +
	"tylko na poludnie w gesty lisciasty las i dalej do szlaku Nuln - Kraina " +
	"Zgromadzenia. " + opis_pory_roku() + "\n";
}

string
wrota()
{
    return    "Ciezkie wrota wykonane z rowno przycietych " +
              "grubych debowych bali i wzmocnione stalowymi okuciami. Na pewno " +
              "nie sa przeszkoda latwa do przejscia, gdyby ktos chcial sie tam " +
              "dostac w niecywilizowany sposob." + ((Brama) ? (" Sa w tej chwili " +
	      "zamkniete.\n") : " Sa w tej chwili otwarte.\n");
}

int
brama_oz()
{
    if (Brama)
    {
	write ("Ciekawe... Przechodzic przez zamkniete wrota?\n");
	say (QCIMIE (this_player(), PL_MIA) + " inteligentnie usiluje przejsc " +
	     "przez zamkniete wrota.\n");
	return 1;
    }
    return 0;
}

void
init()
{
    add_action ("zapukaj", "zapukaj");
    ::init();
}

int
zamknij_brame()
{
    Brama = 1;
    tell_room(this_object(), "Nagle ze zgrzytem wrota zatrzaskuja sie, odcinajac " +
	      "dostep do warowni.\n");
    tell_room(WPATH + "brama.c", "Straznicy sprawnie zamykaja wrota, odcinajac " +
	      "dostep do warowni.\n");
}

int
zapukaj(string str)
{
    if (!stringp (str) && str != "we wrota")
    {
	notify_fail ("Zapukaj w co?\n");
	return 0;
    }

    if (!Brama)
    {
	write ("Ojoj... cos niedobrze z nami? Pukac w otwarte wrota?\n");
	say ("Bardzo roztropnie puka w otwarte wrota.\n");
	return 1;
    }

    if (!ENGINE->query_member (this_player() ) )
    {
	write ("Energicznie pukasz we wrota, ale nie widac zadnej reakcji.\n");
	say (QCIMIE (this_player(), PL_MIA) + " energicznie puka we wrota.\n");
	return 1;
    }

    write ("Energicznie pukasz we wrota i prawie natychmiast brama otwiera sie " +
	   "do srodka.\n");
    say (QCIMIE (this_player(), PL_MIA) + " energicznie puka we wrota i prawie " +
	 "natychmiast brama otwiera sie do srodka.\n");

    Brama = 0;
    
    set_alarm (5.0, 0.0, zamknij_brame);
    tell_room (WPATH + "brama.c", "Ktos z zewnatrz glosno puka w brame, po czym " +
	       "prawie natychmiast dwoch straznikow rusza do wrot i otwiera je.\n");
    return 1;
}

int
query_brama()
{
    return Brama;
}

void
set_brama(int b)
{
    Brama = b;
}

void
zamknij_co()
{
    set_alarm (5.0, 0.0, zamknij_brame);
}
