// By ulatwic prace wszystkim zaczynajacym kodowac ( i nie tylko )
// w domenie Imperium napisalem przykladowa lokacje, korzystajaca
// z wiekszosci standardowych funkcji. Wszystkie one sa opatrzone
// komentarzami - po '//'. Powodzenia.

/* Plik:        lokacja.c
 * Autor:       Silvy
 * Data:        13.10.97
 * Last Update: 4.02.98
 * Opis:        Przykladowa lokacja w domenie Imperium
 */
// Naglowek pliku. Jego nazwa, tworca, data napisania, data ostatniej
// modyfikacji i krotki opis.

inherit "/d/Imperium/przyklady/stdroom.c";
// Plik ktory dziedziczymy ( patrz lpc.txt ). W naszej domenie jest to 
// "/d/Imperium/std/room.c" lub inny plik dziedziczacy powyzszy, a 
// charakterystyczny dla danego terenu pod wzgledem np. opisow por roku. 
// ( np. "/d/Imperium/Nuln/std/room.c" ).

#include "silvy.h"
// Plik z definicjami charakterystycznymi dla danego obszary np. NPATH
// ( patrz silvy.h )


/* include zawierajacy definicje stalych niezbednych do
 * okreslania por dnia, w ktorych ma sie pojawiac npc
 */
#include "/d/Imperium/sys/alarm.h"

void
create_nuln_room()
{
// Inicjalizacja glownej funkcji pomieszczenia. W tym projekcie jest to 
// create_nuln_room() 

    add_prop(ROOM_I_LIGHT, 1);
// Ustalenie natezenia swiatla w tym pomieszczeniu - 0 ciemnosc.
// ( domyslnie 1 )

    add_prop(ROOM_I_INSIDE, 0);
// Ustalenie czy pokoj jest 'na zewnatrz' - 1 pomieszczenie.    
// ( domyslnie 0 )

    set_short("Wschodnie nabrzeze");
// Ustalenie 'krotkiego opisu' pomieszczenia, widocznego w przypadku gdy
// gracz ma wlaczona opcje 'brief'. Ten opis powinien krotko charakteryzowac
// miejsce, bez dodatkowych szczegolow. Na koncu _NIE_MA_KROPKI_. 

    set_long("@@dlugi_opis");
// Wywolanie funkcji ( typu string ) o nazwie dlugi_opis
// Ta funkcja zwrocic ma nam tutaj ( return ) dlugi opis pomieszczenia.

    add_exit(NPATH + "lokacje/doki_2.c","poludnie");
    add_exit(NPATH + "lokacje/ulica_2.c","wschod");
    add_exit(NPATH + "lokacje/doki_3.c","polnoc");
// Dodanie wyjsc z pomieszczenia. Sciezka jest podana jako 'wzgledna'.
// NPATH jest zdefiniowane w pliku definicji silvy.h

    add_item(({"statki","barki"}),
        "Towarowe i pasazerskie, mniejsze i wieksze, pod wieloma " +
        "banderami, kolysza sie majestatycznie na wodzie.\n"); 
    add_item("nadbrzeze",
        "Drewniane deski nadbrzeza ciagna sie po obu stronach rzeki.\n");
    add_item("rzeke",
        "Szeroka i majestatyczna rzeka Reik lsni w sloncu.\n");
    add_item("sieci","Mocne, rybackie sieci, rozwieszone sa dokola. " +
        "Intensywny zapach ryb roznosi sie wokol nich.\n");
// Opisy przedmiotow 'widzianych' przez gracza w danym pomieszczeniu.
// Wazne jest aby wszystko co widac z poziomu dlugiego opisu bylo
// opisane w add_item.

    add_cmd_item(({"sieci","rybackie sieci"}),({"potnij","zniszcz"}),
        "@@sieci");
// Funkcja pozwalajaca graczowi wykonac komendy 'potnij/zniszcz (rybackie)sieci.
// Po ich wykonaniu uruchamiana jest funkcja sieci().

    set_event_time(10.0, 100.0); 
// Zainicjowanie tzw. events, czyli losowych komunikatow pojawiajacych
// sie w danym pomieszczeniu. ( pierwszy pojawi sie po 10 sekundach,
// nastepne co 100 sekund )

    add_event("Stado wyglodnialych mew z przenikliwym wrzaskiem " +
        "wzbilo sie w powietrze.\n"); 
    add_event("Lekka bryza porusza suszace sie w poblizu sieci rybackie.\n"); 
    add_event("Slyszysz dzwiek rogu i widzisz jak wyladowana drewnem " + 
        "barka przeplywa pod jednym z przesel mostu.\n"); 
// Lista eventow.    

    set_events_on(1);
// Wlaczenie eventow.

    dodaj_npca(NPATH + "deluvian.c");
// Dodajemy pana npca zawsze jak poprzedni juz nie zyje - oczywiscie
// tylko przy wywolaniu reset_imperium_room ( raz na okolo 30 minut )
}

string
sieci()
{
// Funkcja sieci() wywolywana z add_cmd_item 

    write("Probojesz zniszczyc sieci. Bezskutecznie\n");
// Tekst ktory ukaze sie graczowi wykonujacemu czynnosc.

    say(QCIMIE(this_player(),PL_MIA) + " proboje zniszczyc sieci. Idiota!\n");
// Inni w tym pomieszczeniu zobacza ze gracz cos robi.

    return"";
// Zwracany tekst ( tu pusty ) - wymaganie funkcji typu string.    
}    

string
dlugi_opis()
{
// Funkcja dlugi_opis wywolana z set_long
    return "Przed toba otwiera sie wspanialy widok na lsniace " +
        "wody rzeki Reik. Plynie ona leniwie z polnocy, niosac " +
        "wyladowane barki ku odleglym krainom. Wzdluz calego " +
        "nadbrzeza widzisz przycumowane statki roznej wielkosci. " +
        opis_pory_roku() +
// W srodek dlugiego opisu wlaczona jest funkcja opis_pory_roku(),
// To co zwraca jest zalezne od kalendarza imperalnego. Opisy por
// roku i por dnia sa zdefiniowane w pliku room.c dziedziczonym przez
// to pomieszczenie.
        " Szeroka ulica biegnaca na wschod prowadzi wglab miasta. " +
        "Wkolo susza sie rybackie sieci. " +
        "Do twych nozdrzy dociera intensywny zapach ryb i wodorostow.\n";
// Dlugi opis. Minimum 4 linijki tekstu. 
// Return zwraca go spowrotem do funkcji set_long
}
