
/* Plik:        stajnia.c
 * Autor:       Kylo
 * Data:        24.10.97
 * Last Update: 14.11.97
 * Opis:        Stajnia w zajezdzie		
 */

// Dziedziczenie standartowego pokuju w Imperium
// Narazie zostawiam ten
inherit "/d/Imperium/std/room.c";

#include "stajnia.h"

// medalion
object medalion=0;

/*
 * Nazwa funkcji: ustaw_dlugi_opis()
 * Opis:	  Ustawi dlugi opis stajni zajazdu (VBFC)       
 * Argumenty:	  brak
 * Zwraca:	  dlugi opis stajni
 */

string
ustaw_dlugi_opis() 
{
    string opis="";
    opis+="Podluzne pomieszczenie srodkiem ktorego biegnie przejscie. " +
	"Po bokach znajduja sie po cztery boksy przeznaczone dla " +
	"wierzchowcow podroznych. Dwa z nich sa zajete przez muly, " +
	"pozostale zas pozostaja w chwili obecnej wolne, poza " +
	"boksem na wschodzie, na samym koncu przejscia. " +
	"Znajduje sie tam dorodny kary ogier. " +
	"Obok ciebie stoi drabina prowadzaca przez kwadratowy otwor " +
	"w suficie na stryszek. " +
	"Na zachodzie znajduje sie wewnetrzny dziedziniec zajazdu. " +
	"\n";
return opis;
} 
// koniec funkcji ustaw_dlugi_opis()
    
/*
 * Nazwa funkcji: create_imperium_room()
 * Opis:	  Inicjalizacja glownej funkcji pomieszczenia
 *		  W Imperium jest to create_imperium_room() 
 *		  nie zas create_room().
 * Argumenty:	  brak
 * Zwraca:	  nic nie zwraca
 */
 	
void
create_imperium_room()
{
    // Ustalenie natezenia swiatla w tym pomieszczeniu - 0 ciemnosc.       
    // ( domyslnie 1 )
    add_prop(ROOM_I_LIGHT, 1);

    // Ustalenie czy pokoj jest 'na zewnatrz' - 1 pomieszczenie.    
    // ( domyslnie 0 )
    add_prop(ROOM_I_INSIDE, 1);

    // Ustalenie 'krotkiego opisu' pomieszczenia,"
    // Na koncu _NIE_MA_KROPKI_. 
    set_short("Stajnia zajazdu");

    // Ustawienie dlugiego opisu
    set_long("@@ustaw_dlugi_opis");

    // Dodanie wyjsc z pomieszczenia
    add_exit(LOKACJE_PATH + "dziedziniecw.c","zachod");
    add_exit(LOKACJE_PATH + "stryszek.c","gora");
    add_exit(LOKACJE_PATH + "bug.c","wschod","@@kon@@");
    add_exit(LOKACJE_PATH + "bug.c","polnoc","@@mul@@");
    add_exit(LOKACJE_PATH + "bug.c","poludnie","@@mul@@");

    // Ustawienie opisow przedmiotow 'widzianych' 
    // przez gracza w danym pomieszczeniu.
    // budynek/zajazd,wejscie/drzwi,szyld/tabliczka,brama,mur
    add_item("boks",
	"Prostokatny obszar w sam raz dla konia lub mula wyscielany sloma. " +
	"\n");
    add_item("boksy",
	"Prostokatne obszary w sam raz dla konia lub mula wyscielane sloma. " +
	"\n");
    add_item("mula",
	"Mul jak mul, jego siersc jest brazowo szara, a on sam wyglada na " +
	"dosyc uparte stworzenie." +
	"\n");
    add_item("muly",
        "Stoja tylem do ciebie, wiec widzisz tylko ich zadki. " +
        "\n");	
    add_item("konia",
	"Przepiekny ogier o bardzo czarnej masci. " +
	"\n");
    add_item("drabine",
        "Dwa dlugie dragi i pare desek jako szczeble, nic niezwyklego. " +
        "Jednego szczebla brakuje. " +
        "\n");
    add_item("otwor",
        "Kwadrawowa dziura w suficie prowadzaca na stryszek. " +
        "\n");
    // Pozwalenie graczowi wykonac komendy 
    // add_cmd_item(({objekt}),({komenda}),funkcja);

    // Zainicjowanie tzw. events, czyli losowych komunikatow pojawiajacych
    // sie w danym pomieszczeniu. ( pierwszy pojawi sie po 10 sekundach,
    // nastepne co 100 sekund )
    
    set_event_time(10.0, 200.0); 
    // Lista eventow. 
       
    add_event("Kary ogier parsknal i wykonal niespokojny ruch. \n");
    add_event("Jeden z mulow wydal jakis dziwny dzwiek, od ktorego przeszyly " +
	"Cie dreszcze." +
	"\n"); 
    add_event("Szara mysz przemknela po klepisku znikajac w slomie w jednym " +
	"z wolnych boksow. " +
	"\n");	
    // Wlaczenie eventow.
    set_events_on(1);

    dodaj_npca(NPC_PATH + "stajenny.c");
  
    add_cmd_item(({"sol koniowi","sol czarnemu koniowi"}),"daj","@@danie@@");

}
// koniec funkcji create_imperium_room

int 
kopniecie(object tp)
{
    int new_hp;
    if (tp->resolve_task(TASK_ROUTINE, ({TS_DEX, SS_DEFENCE})) >0)
    {
	new_hp=tp->query_hp();
	new_hp=ftoi(0.9*itof(new_hp));
        tp->set_hp(new_hp);
        return 1;
    }
    else
        return 0;
}

int
mul()
{
    object tp;
    tp=this_player();
    write("Usilujesz wejsc do boksu z mulem, gdy ten nagle " +
        "probuje kopnac cie w glowe. " +
        "\n");
    say("Widzisz jak " + QCIMIE(tp,PL_MIA) + " usiluje wejsc do boksu z mulem, " +
        "gdy ten nagle " +
        "probuje kopnac " + tp->query_zaimek(PL_BIE,0) + " w glowe. " +
        "\n");
    if (kopniecie(tp))
    {
        write("Chcesz uskoczyc, ale nie udaje ci " +
            "to sie, mul trafia cie w korpus i lekko rani. " +
            "\n");
        say(QCIMIE(tp,PL_MIA) + " chce uskoczyc ale nie udaje " +
            tp->query_zaimek(PL_CEL,0) + " to sie, mul trafia " +
            tp->query_zaimek(PL_BIE,0) + " w korpus i " +
            "lekko rani. " +
            "\n");
    }
    else
    {
        write("W ostatniej chwili udaje ci sie " +
            "uskoczyc i uniknac tego ciosu. " +
            "\n");
        say("W ostatniej chwili udaje " +
        tp->query_zaimek(PL_CEL,0) +
            " sie uskoczyc i uniknac ciosu. " +
            "\n");
    }
    return 1;
}

int
kon()
{
    object tp;
    tp=this_player();
    if (tp->query_prop("_kylo_i_dal_sol_koniowi"))
    {
        if (medalion==0)
        {
            medalion=clone_object(PRZEDMIOTY_PATH + "medalion.c");
            write("Kon nie zwraca na ciebie uwagi gdy przeciskasz sie " +
                "kolo niego, twoja uwage zwraca natomist medalionik " +
                "w slomie. ");
            say(QCIMIE(tp,PL_MIA) + " przeciska sie kolo konia w boksie, a ten " +
        	"nie zwraca na niego uwagi. ");
            tp->add_prop("_kylo_i_wzial_medalion",1);
            if (medalion->move(tp))
            {        
               write("Bierzesz go do reki, a nastepnie szybko " +
                   "opuszczasz boks poniewaz kon zaczyna niecierpiwie " +
                   "przebierac nogami. W ostatniej chwili uskakujesz " +
                   "przed jego kopnieciem, medalion jednak wypada ci " +
                   "z reki. " +
                   "\n");
               say(QCIMIE(tp,PL_MIA) + " bierze cos do reki, a nastepnie szybko " +
                   "opuszcza boks poniewaz kon zaczyna niecierpiwie " +
                   "przebierac nogami. W ostatniej chwili uskakuje " +
                   "przed jego kopnieciem, cos przy tym wypada " +
                   tp->koncowka("mu","jej") +
                   " z reki. " +
                   "\n");
               medalion->move(this_object());
            }
            else
            {
               write("Bierzesz go do reki, chowsz, a nastepnie szybko " +
                   "opuszczasz boks poniewaz kon zaczyna niecierpiwie " +
                   "przebierac nogami. " +
                   "\n");
               say(QCIMIE(tp,PL_MIA) + " bierze cos do reki, chowa, a nastepnie szybko " +
                   "opuszcza boks poniewaz kon zaczyna niecierpiwie " +
                   "przebierac nogami. " +
                   "\n");
            }
        }
        else
        {
            write("Kon nie zwraca na ciebie uwagi gdy przeciskasz sie " +
                "kolo niego, rozgladasz sie po boksie, ale nie widzisz " +
                "nic ciekawego. Kon zaczyna niecierpliwie przebierac nogami " +
                "wiec szybko opuszczasz boks. " +
                "\n");
            say(QCIMIE(tp,PL_MIA) + " przeciska sie kolo konia w boksie, a ten " +
        	"nie zwraca na niego uwagi, rozglada sie po boksie, jakby " +
        	"czegos szukal. Kon zaczyna niecierpliwie przebierac " +
        	"nogami wiec szybko opuszcza boks. " +
        	"\n");
        }    
    }        
    else
    {
        write("Usilujesz wejsc do boksu z koniem, gdy ten nagle " +
           "probuje kopnac cie w glowe. " +
            "\n");
        say("Widzisz jak " + QCIMIE(tp,PL_MIA) + " usiluje wejsc do boksu z koniem, " +
            "gdy ten nagle " +
            "probuje kopnac " + tp->query_zaimek(PL_BIE,0) + " w glowe. " +
            "\n");
        if (kopniecie(tp))
        {
            write("Chcesz uskoczyc, ale nie udaje ci " +
                "to sie, kon trawia cie w korpus i lekko rani. " +
                "\n");
            say(QCIMIE(tp,PL_MIA) + " chce uskoczyc ale nie udaje " +
                tp->query_zaimek(PL_CEL,0) + " to sie, kon trafia " +
                tp->query_zaimek(PL_BIE,0) + " w korpus i " +
                "lekko rani. " +
                "\n");
        }
        else
        {
            write("W ostatniej chwili udaje ci sie " +
                "uskoczyc i uniknac tego ciosu. " +
                "\n");
            say("W ostatniej chwili udaje " +
            tp->query_zaimek(PL_CEL,0) +
                " sie uskoczyc i uniknac ciosu. " +
                "\n");
        }
    }
    return 1;
}

string
danie()
{
    int i=0;
    object tp;
    object sol=0;
    object *przedmioty;
    tp=this_player();
    przedmioty=all_inventory(tp);
    while (i<sizeof(przedmioty))
    {
        if (MASTER_OB(przedmioty[i])==(PRZEDMIOTY_PATH + "sol"))
    	    sol=przedmioty[i];
    	i++;
    }
    if(sol)
    {
        write("Podsuwasz koniowi garsc soli pod pysk, a on swym " +
            "jezykiem ja zlizuje. " +
            "\n");
        say(QCIMIE(tp,PL_MIA) + " podsuwa koniowi garsc soli pod pysk, a on " +
            "swym jezykiem ja zlizuje. " +
            "\n");
        tp->add_prop("_kylo_i_dal_sol_koniowi",1);
        sol->remove_object();
    }
    else
    {
        write("Daj co komu? \n");
    }
    return "";
}