inherit "/d/Imperium/std/monster.c";
//inherit "/std/act/add_things.c";
//inherit "/std/act/action";
#include <stdproperties.h>
#include <ss_types.h>
#include <macros.h>
#include "local.h"
#include <wa_types.h>
#include <filter_funs.h>

#define WEP HOME + "bronie/miecz.c"
#define ARM HOME + "bronie/kurtka.c"
#define PIERSCIEN HOME + "pierscien.c"
#define SOUL_RANGARA "/d/Imperium/Lesnykrag/lesniczy_soul"

object gracz;

// Prototypy:
   int czy_podoba_mi_sie_ten_gracz_w_mojej_gildii(object gracz);
   int czy_podobaja_mi_sie_inne_gildie_w_ktorych_jest_gracz(object gracz);

create_monster()
{
    ustaw_imie(({"klaus","klausa","klausowi","klausa","klausem","klausie"}),
                  PL_MESKI_OS);
    set_long("Krepy, stary mezczyzna o cerze ogorzalej od wiatru i slonca."+
             " Jego dlugie, proste wlosy sa zmierzwione jak od wichury, a rece zniszczone"+
             " od ciezkiej pracy, ale jego sylwetka wyraza zdecydowanie i zacieklosc, a w zielonych"+
             " oczach pala plomien determinacji.\n");
    
    dodaj_przym("zielonooki","zielonoocy");
    dodaj_przym("krepy","krepi");         
    
    set_title("Moltke, Arcyhierofant Lesnego Kregu");
    ustaw_odmiane_rasy(PL_CZLOWIEK);
    
    set_gender(G_MALE);
    
    set_random_move(100, 1);
    
    set_stats(({45+random(30),40+random(30),35+random(30),30,33,51}));
    set_hp(this_object()->query_max_hp());
    set_skill(SS_DEFENCE, random(30)+15);
    set_skill(SS_PARRY, random(30)+10);
    set_skill(SS_WEP_SWORD,random(60)+10);    
    set_chat_time(45+random(10));
    set_act_time(32+random(10));
    
    add_act("emote spoglada na ciebie, a w jego zielonych oczach widac madrosc prastarego Lasu.");
    add_act("emote pochyla glowe i zdaje sie cos mamrotac.");
    add_act("emote spokojnie sie usmiecha.");
    add_act("emote gleboko sie zamysla, bezwiednie obracajac pierscien.");
    add_act("emote patrzy gdzies w dal.");
    add_act("emote szeptem cos recytuje.");

    add_act("powiedz Niech Taal ma nas w swojej opiece.");
    add_act("powiedz Czy potrafisz dochowac tajemnicy?");
    add_act("powiedz Jezeli szanujesz las i jestes wiernym wyznawca Taala, moze zechcesz sie do mnie przylaczyc?");
    add_act("powiedz Niech beda dzieki Taalowi, juz drugi raz zawrocil mnie sprzed bram Morra.");
    add_act("powiedz Nie naduzywaj goscinnosci Lasu, moze cie spotkac straszna kara.");
    
    add_cact("powiedz To glupota atakowac Lesny Krag!");
    add_cact("powiedz Okladam cie klatwa Taala!");
    add_cact("powiedz Taalu, przyjmij dusze mojego wroga!");
    
    set_alignment(0);

    setuid();
    seteuid(getuid());
    
    add_weapon(WEP);
    add_armour(ARM);        
    add_armour(PIERSCIEN);
    
    set_alarm(0.3,0.0,"dodaj_dusze");
    add_ask(({"tajemnice","krag","lesny krag"}), VBFC_ME("krag_hint"));
    set_default_answer(QCIMIE(this_object(),PL_MIA) + " odpowiada: Nie wiem, o czym mowisz!"+
                       " Czy ja wygladam na jasnowidza?\n");
    
}

// Reszta :)
void
init_living()
{
    ::init_living();
    add_action("join", "zapisz");
    add_action("leave", "wypisz");
}

int
join(string str)
{

    if (!str || str != "sie")
    {
	 notify_fail("Kogo chcesz zapisac?\n");
	 return 0;
    }

    if (!czy_podoba_mi_sie_ten_gracz_w_mojej_gildii(this_player()))
	return 0;

    if (!czy_podobaja_mi_sie_inne_gildie_w_ktorych_jest_gracz(this_player()))
	return 0;
	
    // KLUB  
  if(this_player()->test_bit("imperium",1,0))
  {
    notify_fail("Nie mozesz przylaczyc sie do tego klubu, jestes juz bowiem "+
      "w innym.\n");
    return 0;
  }


    write("Od teraz jestes jedn"+this_player()->koncowka("ym","a")+
	  " z czlonk"+this_player()->koncowka("ow","in")+
	  " Lesnego Bractwa.\nJezeli kiedykolwiek zechcesz opuscic Krag, znajdz mnie i wypisz sie.\n");
    
    clone_object(PIERSCIEN)->move(this_player());
    
    seteuid("silvy");

    write_file("/d/Imperium/Lesnykrag/zapisani.log",
       ctime(time()) + ": " + this_player()->query_name()+"\n");

  this_player()->set_bit(1,0);

    return 1;
}

int
leave(string str)
{
    object *rzeczy = ({});
    int i = 0;

    if (!str || str != "sie")
    {
	 notify_fail("Kogo chcesz wypisac?\n");
	 return 0;
    }
   
    if (member_array(SOUL_RANGARA,this_player()->query_cmdsoul_list()) == -1)
    {
	notify_fail("Alez ty nie jestes czlonki"+this_player()->koncowka("em","nia")+" Lesnego Kregu!\n");
	return 0;
    }
    else
    {
	this_player()->remove_cmdsoul(SOUL_RANGARA);
	this_player()->update_hooks();
	write("Od tej chwili nie cieszysz sie juz przychylnoscia Taala.\n");

        rzeczy = all_inventory(this_player());
	
	for (i = 0; i < sizeof(rzeczy); i++)
	{
	    if(rzeczy[i]->id("pierscien_lasu")) rzeczy[i]->remove_object();
	}    

    seteuid("silvy");

    write_file("/d/Imperium/Lesnykrag/wypisani.log",
       ctime(time()) + ": " + this_player()->query_name()+"\n");
      
  this_player()->clear_bit(1,0);
        
        return 1;
    }
    
    return 1;
}

void
enter_inv(object co, object skad)
{
    if ((!objectp(skad)) || (!objectp(co)))
        return;
    if (co->query_nazwa(PL_BIE)=="pierscien")
        co->remove_object();
    else
        {
            command("poloz " + co->query_nazwa(PL_BIE));
            command("powiedz Nie potrzebuje tego.");
        }
       
}

int
czy_podoba_mi_sie_ten_gracz_w_mojej_gildii(object gracz)
{
    string rasa;
    
    rasa = gracz->query_race_name();
    
    if ( (rasa == "ogr") || (rasa == "ogrzyca") ||
	 (rasa == "krasnolud") || (rasa == "krasnoludka") )
    {
	notify_fail("Ogry i Krasnoludy nie szanuja Lasu, wiec nie moga przylaczyc sie do Kregu.\n");
	return 0;
    }

    if (!(member_array(SOUL_RANGARA,gracz->query_cmdsoul_list()) == -1))
    {
	notify_fail("Alez juz jestes jedn" + gracz->koncowka("ym", "a") +
	    " z nas.\n");
	return 0;
    }

/* Tu mozesz sprawdzic czy gracz rozwiazal questa wejsciowego, lub 
    czy spelnia jakiekolwiek inne wymagania... */
    
    return 1;
}

int
czy_podobaja_mi_sie_inne_gildie_w_ktorych_jest_gracz(object gracz)
{
    if (gracz->query_guild_member("Lesne Bractwo"))
    {
	notify_fail("Twoja gildia nie szanuje Lasu, a miana Lesniczego uzywa jako pretekstu"+
		    " do polowania na Nieludzi. Taal nie pochwala takiego zachowania. Nie mozesz sie przylaczyc.\n"); 
	return 0;
    }

    return 1;
}


dodaj_dusze()
{
    setuid();
    seteuid(getuid());
    
    
    add_cmdsoul(SOUL_RANGARA);
    update_hooks();

}

varargs string
krag_hint(int faza)
{
    gracz = this_player();
    if (!present(gracz, environment(this_object())))
    {
        command("emote marszczy brwi.");
        return "";
    }
    switch(faza)
    {
        case 0:
            command("powiedz Ah, wiec jestes ciekaw"+ gracz->koncowka("y","a") +
                    " co to jest Lesny Krag? Krag to organizacja zrzeszajaca tych"+
                    " ktorym los kniei nie jest obojetny, tych, ktorzy chca"+
                    " chronic go przed ludzka zachlannoscia, jak i przed intruzjami"+
                    " Chaosu.");
            command("splun");
            set_alarm(10.0, 0.0, "krag_hint", (faza + 1));
            break;
        case 1:
            command("powiedz Dawno temu, kiedy odnioslem smiertelna rane, objawil mi sie"+
                    " Taal i dal mi misje. Mialem chronic las i zwierzeta go zamieszkujace.");
            command("powiedz W ciagu lat, jakie minely od zalozenia Kregu przylaczyli sie do"+
                    " mnie inni, myslacy podobnie jak ja.");
            command("emote zwiesza glowe i ze smutkiem wzdycha.");
            set_alarm(12.0, 0.0, "krag_hint", (faza + 1));
            break;
        case 2:
            command("powiedz Wiekszosc z nich juz nie zyje...");
            command("powiedz To straszne, przezyc swoich uczniow, swoje dzieci...");
            set_alarm(12.0, 0.0, "krag_hint", (faza + 1));
            break;
        case 3:
            command("powiedz Wola Taala bylo zachowanie mojego zycia, mam kontynuowac swoja"+
                    " misje, i na wszystkich bogow przysiegam: Nie przerwe jej, poki choc"+
                    " slad zycia we mnie pozostanie!");
            command("emote zgina sie w poteznym ataku kaszlu.");
            set_alarm(12.0, 0.0, "krag_hint", (faza +1));
            break;
        case 4:
            command("powiedz Nie pozostalo mi juz wiele czasu na tym padole, ale nie spoczne...!"+
                    " Jezeli chcesz przylaczyc sie do mojej sprawy, 'zapisz' sie.");
            command("lkspojrz niecierpliwie na "+ gracz->query_real_name(PL_BIE));
            break;
    }
    return "";
}
    
void
add_introduced(string imie)
{
    set_alarm(2.0, 0.0, "return_intro", lower_case(imie));
}

varargs void
return_intro(string kto)
{
        if(!find_player(kto)) return;
        command("przedstaw sie "+ OB_NAME(find_player(kto)));
        command("lkpozdrow "+ find_player(kto)->query_real_name(PL_DOP));
}
