
/*
 * File:		pas.c
 * Autor:		Kylo (w oparciu o kurtke by Vanes)
 * Date:		21.02.98
 * Last Update:	21.02.98
 * Opis:		pas - obiekt gildiowy
 */
 
inherit "/std/armour.c";

#include <cmdparse.h>
#include <macros.h>
#include <stdproperties.h>
#include <wa_types.h>

#include "defs.h"

#pragma no_inherit
#pragma strict_types

int ma_wlasciciela = 1;		/* Na poczatku, przyjmuje sie ze kurtka ma
                                   wlasciciela. Kiedy trafi do otoczenia nie
                                   bedacego czlonkiem gildii, wywolywana jest
                                   funkcja nie_ma_wlasciciela(). */

void
create_armour()
{
//	ustaw_nazwe (({"","","","","",""}),
//		({"","","","","",""}),
//		PL_ZENSKI);
	dodaj_nazwy (({"pas","pasa","pasowi","pas","pasem","pasie"}),
		({"pasy","pasow","pasom","pasy","pasami","pasach"}),
		PL_MESKI_NZYW);

	dodaj_przym ("blekitny","blekitni");
//	dodaj_przym ("skorzany","skorzani");
	
	set_long ("Jest to wykonany ze skory, wykonana z miekkiej brazowej skory, "+
		"kurtka, symbol czlonkow Bractwa Lesniczych. Dzieki niej "+
		"moga oni niepostrzezenie przemykac sie pomiedzy drzewami, "+
		"co w polaczeniu z ich umiejetnosciami daje im duze szanse "+
		"w walce z lesnymi elfami. Na metce dostrzegasz napis "+
		"'lpomoc'. Ciekawe co to moze znaczyc?\n");
		
	add_prop (OBJ_I_WEIGHT, 1000);
	add_prop (OBJ_I_VALUE, 100);

    add_prop(OBJ_M_NO_SELL, "Nie mozesz sprzedac swojej "
           + "kurtki. Zbyt duzo dla ciebie znaczy.\n");
    add_prop(OBJ_M_NO_DROP, "Nie mozesz pozbyc sie swojej "
           + "kurtki. Zbyt duzo dla ciebie znaczy.\n");
    add_prop(OBJ_M_NO_GIVE, "Nikt poza lesniczym nie moze "
           + "nosic takiej pieknej skorzanej kurtki.\n");
    add_prop(OBJ_M_NO_STEAL, 1);

    /* Na poczatku obiekt nie jest jeszcze dokladnie zainicjalizowany. */
    set_alarm(0.1, 0.0, "sprawdz_wlasciciela");

	set_at (A_ROBE);
	set_ac (10);
	set_am (({2,1,1}));

    set_af(this_object());	/* Aby byly wywolywane funkcje wear, remove */
}

static void
nie_ma_wlasciciela()
{
    ma_wlasciciela = 0;

    update_actions();

    remove_prop(OBJ_M_NO_SELL);
    remove_prop(OBJ_M_NO_DROP);
    remove_prop(OBJ_M_NO_GIVE);
    remove_prop(OBJ_M_NO_STEAL);

    /* Warto by tez zmienic dlugi opis... */
    set_long ("Jest to dosc duza, wykonana z brazowej skory kurtka. Bardzo "+
              "przypomina kurtki, ktore mozna kupic w kazdym wiekszym miescie "+
              "od wedrownych kupcow na rynkach lub bazarach, ale jest w niej cos, "+
              "co powoduje, ze sprawia wrazenie nieco innej. Moze to wrazenie "+
              "powodowane jest faktem, ze kurtka jest juz dosc mocno znoszona, "+
              "choc wcale nie jest zniszczona. Mimo wszystko niezbyt nadaje sie "+
              "do walki, duzo bardziej pasuje do wycieczki krajoznawczej po "+
              "miescie.\n");
}

void
sprawdz_wlasciciela()
{
    object env = environment();

    if (env && !(env->query_guild_member(GUILD_NAME)))
        nie_ma_wlasciciela();
}

void
init()
{
    ::init ();

    if (ma_wlasciciela)
    {
        add_action("lpomoc","lpomoc");
        add_action("lpoprzyj","lpoprzyj");
    }
}

mixed
wear(object ob)
{
    sprawdz_wlasciciela ();
    if (ma_wlasciciela)
        this_player()->add_subloc(KURTKA_SUBLOC, this_object());
    return 0;
}

mixed
remove(object ob)
{
    sprawdz_wlasciciela ();
    if (ma_wlasciciela)
        this_player()->remove_subloc(KURTKA_SUBLOC);
    return 0;
}

void
leave_env(object from, object to)
{

    this_player()->remove_subloc(KURTKA_SUBLOC);
    ::leave_env(from, to);
}

void
enter_inv(object dest, object old)
{
    if (ma_wlasciciela && !(dest->query_guild_member(GUILD_NAME)))
        nie_ma_wlasciciela();
    ::enter_env(dest, old);
}

string
show_subloc(string subloc, object on_obj, object for_obj)
{
    sprawdz_wlasciciela ();
    if ((subloc == KURTKA_SUBLOC)&&(ma_wlasciciela))
    {
     
        if (on_obj == for_obj)
            return "Po twojej pieknej skorzanej kurtce widac, ze nalezysz "
                 + "do Bractwa Lesniczych.\n";
        return "Po " + on_obj->koncowka("jego","jej")
             + " pieknej skorzanej kurtce widac, ze nalezy do "
             + "Bractwa Lesniczych.\n";
    }
}

string 
query_auto_load ()
{
    sprawdz_wlasciciela ();
    if (ma_wlasciciela)
        return LESNICZY+"les_kurtka.c:";
}

void
dodaj_duszyczke (object komu)
{
/*    setuid();
    seteuid(getuid(this_object()));

	sprawdz_wlasciciela ();
	if (ma_wlasciciela)
	{
		if (komu -> add_cdmsoul (SOUL))
		{
			komu -> update_hooks ();
			komu -> update_cmdsoul_list ();
		}
		else
			komu -> catch_msg ("Nie moge dodac ci duszy.\n"+
			"Skontaktuj sie z Konsulem Bractwa Lesniczych.\n");
	}
	return;
*/
}

void
init_arg (string str)
{
    setuid();
    seteuid(getuid(this_object()));

	set_alarm (0.2,0.0,"dodaj_duszyczke", this_player());
}

int
lpomoc (string str)
{
	string msg="";
	switch (str)
	{
		case "o gildii":
		msg = "Bractwo Lesniczych jest ludzka gildia rasowa, ktorej glownym "+
		      "celem jest eksterminacja ras innych od ludzkiej. Do gildii "+
		      "wstepuja wiec tylko i wylacznie ludzie, czesto majac osobiste "+
		      "motywy, jak smierc bliskich im osob z rak nieludzi. Czlonkowie "+
		      "Bractwa nie sa moze najbystrzejszymi ludzmi, ale ciesza sie "+
		      "poparciem ludnosci okolicznych wiosek, poniewaz stanowia "+
		      "jedyna realna sile przeciwko komandom Sociatel. Wyznaja oni "+
		      "idee czystosci rasowej i dzialaja w imie ich zasady i powiedzenia: "+
		      "'Dobry nieludz to martwy nieludz!'\n";
		      break;
		case "o tytulach":
		msg = "W Bractwie panuje nastepujaca hierarchia czlonkow: \n"+
		      "  Legenda lesniczego bractwa\n"+
		      "  Dowodca lesniczych bojowek\n"+
		      "  Demaskator Socatiel\n"+
		      "  Pogromca komand Socatiel\n"+
		      "  Zabojca Socatiel\n"+
		      "  Mistrz tropiciel Socatiel\n"+
		      "  Uznany tropiciel Socatiel\n"+
		      "  Doswiadczony tropiciel Socatiel\n"+
		      "  Tropiciel Socatiel\n"+
		      "  Pogromca dziwozon\n"+
		      "  Msciciel lesniczego bractwa\n"+
		      "  Zolnierz lesniczego bractwa\n"+
		      "  Starszy lesniczy\n"+
		      "  Mlodszy lesniczy\n"+
		      "  Straznik puszczy\n"+
		      "  Obronca puszczy\n"+
		      "  Mlody obronca puszczy\n"+
		      "  Niedoswiadczony obronca puszczy\n"+
		      "  Aspirant lesniczego bractwa\n"+
		      "  Pomocnik lesniczego bractwa\n"+
		      "  Uczen lesniczego bractwa\n"+
		      "Oczywiscie sa tez analogiczne tytuly kobiece.\n";
		      break;
		case "o umiejetnosciach":
		msg = "Czlonkowie Bractwa Lesniczych moga doskonalic swe "+
		      "umiejetnosci w wielu przydatnych dziedzinach. "+
		      "Naleza do nich:\n"+
		      "* ukrywanie sie\n"+ 
		      "* skradanie sie\n"+
		      "* tropienie\n"+
		      "* wyczucie kierunku\n"+
		      "* walka bronia drzewcowa\n"+
		      "oraz\n"+
		      "* walka mieczem\n"+
		      "lub\n"+
		      "* walka toporem\n"+
		      "Sposrod tych dwoch ostatnich czlonkowie Bractwa wybieraja "+
		      "jedna umiejetnosc, wybor polega na tym, ze jesli zacznie "+
		      "sie uczyc jednej, to nie bedzie juz mogl zaczac drugiej. "+
		      "Dlatego przed podjeciem decyzji nalezy sie dobrze zastanowic.\n";
		break;
		case "o zasadach":
		msg = "1. Zasady wstepowania\n"+
		      "Do gildii moga wstepowac tylko ludzie, ktorzy moga byc "+
       		      "najwyzej dobrzy. Nie moga oni figurowac na liscie wrogow "+
		      "Bractwa, do ktorej imiona bedzie mogl dopisywac konsulat. "+
		      "Dodatkowo czlowiek, ktory chce wstapic musi otrzymac poparcie "+
		      "kogos z Bractwa. Poparcie daje sie takiemu czlowiekowi przez "+
		      "komende 'lpoprzyj <gracza>'.\n"+
		      "2. Obowiazki Lesniczego\n"+
		      "Do obowiazkow czlonka Bractwa nalezy:\n"+
		      "* tepienie wszystkiego co sie rusza i mysli, a nie jest czlowiekiem\n"+
		      "* strzezenie bezpieczenstwa puszcz i nadpusczanskich miejscowosci\n"+
		      "* bezwzgledne udzielanie pomocy ludziom walczacym z nieludzmi\n"+
		      "* wynoszenie rasy ludzkiej nad kazda inna przy kazdej mozliwej okazji\n"+
		      "* czlonek Bractwa nie powinien utrzymywac kontaktow towarzyskich z "+
		      "osobnikami innych ras\n"+
		      "3. Wystepowanie z Bractwa\n"+
		      "Oczywiscie istnieje mozliwosc opuszczenia szeregow Bractwa, ale wiaze "+
		      "sie to z kilkoma nieprzyjemnosciami:\n"+
		      "* utrata 25% doswiadczenia bojowego\n"+
		      "* utrata umiejetnosci wyuczonych w Bractwie\n";
		      break;
      
		      
		case "o emotach":
		msg = "Wstpienie do Bractwa Lesniczych wiaze sie oczywiscie "+
		      "z dodatkowymi emotami. Oto ich lista:\n"+
		      "lsplun		lsmrod		lpalec		lspojrz\n"+
		      "lpokaz bron 	lpatrz		lsmiej sie	lpogardz\n"+
		      "lrozejrzyj sie 	lusmiech	lprzywitaj 	lspoliczkuj\n"+
		      "lzaproponuj	lspytaj		luklon sie\n"+
		      "Aby otrzymac dokladniejszy opis wraz z przykladem wpisz:\n"+
		      "'lpomoc <emot>'\n";
			break;
		case "lsplun":
		msg = 
		      "* lsplun <na kogo>\n"+
		      ">lsplun na Raaga\n"+
		      "Spluwasz za siebie z patrzac na Raaga z odraza.\n";
			break;
		case "lsmrod":
		msg =
		      "* lsmrod\n"+
		      ">lsmrod\n"+
		      "Wciagasz gleboko powietrze nosem, wykrzywiasz twarz w "+
		      "grymasie obrzydzenia, mowiac dobitnie: \"Cos tu smierdzi.\"\n";
			break;
		case "lpalec":
		msg =
		      "* lpalec <komu>\n"+
		      ">lpalec Raagowi\n"+
		      "Unoszac srodkowy palec w jednoznacznym gescie, sugerujesz aby "+
		      "Raag zmienil lokal.\n";
		      break;
		case "lspojrz":
		msg =
		      "* lspojrz <na kogo>\n"+
		      ">lspojrz na Raaga\n"+
		      "Taksujesz Raaga uwaznym spojrzeniem.\n";
		      break;
		case "lpokaz bron":
		msg =
		      "* lpokaz bron <komu>\n"+
		      ">lpokaz bron Raagowi\n"+
		      "Powoli wyciagasz bron i zaczynasz wodzic reka po ostrzu "+
		      "patrzac jednoczesnie w oczy Raagowi.\n";
		      break;
		case "lpatrz":		    
		msg =
		      "* lpatrz\n"+
		      ">lpatrz\n"+
		      "Spogladasz w zadumie w przestrzen.\n";
		      break;
		case "lsmiej sie":
		msg = 
		      "* lsmiej sie\n"+
		      ">lsmiej sie\n"+
		      "Wybuchasz przerazajacym urywanym smiechem.\n";
		      break;
		case "lpogardz":
		msg =
		      "* lpogardz <kim>\n"+
		      ">lpogardz Raagiem\n"+
		      "Wykrzywiasz twarz w wyrazie pogardy i niesmaku, gdy patrzysz "+
		      "na Raaga.\n";
		      break;
		case "lrozejrzyj sie":
		msg = 
		      "* lrozejrzyj sie\n"+
		      ">lrozejrzyj sie\n"+
		      "Uwaznie taksujesz wzrokiem otoczenie, sprawdzajac czy nie ma "+
		      "w poblizu jakiegos parszywego odmienca.\n";
		      break;
		case "lusmiech":
		msg = 
		      "* lusmiech\n"+
		      ">lusmiech\n"+
		      "Wykrzywiasz usta w parodii usmiechu, a z glebi twojej krtani "+
		      "dobywa sie dudniacy glos: \"Dobry nieludz to martwy nieludz!\"\n";
		      break;
		case "lprzywitaj":
		msg =
		      "* lprzywitaj <kogo>\n"+
		      ">lprzywitaj Vanesa\n"+
		      "Obejmujesz Vanesa serdecznie w niedziedzim uscisku, a twoje gorejace "+
		      "fanatyzmem oczy wysylaja mu powitalne spojrzenie.\n";
		      break;
		case "lspoliczkuj":
		msg =
		      "* lspoliczkuj <kogo>\n"+
		      ">lspoliczkuj Raaga\n"+
		      "Pietnujesz Raaga jako zdradzieckiego odmienca, wymierzajac mu "+
		      "siarczysty policzek.\n";
		      break;
		case "lzaproponuj":
		msg =
		      "* lzaproponuj <kogo>\n"+
		      ">lzaproponuj Raaga\n"+
		      "Usmiechajac sie enigmatycznie, proponujesz niewielkie polowanko "+
		      "na Raaga.\n";
		      break;
		case "lspytaj":
		msg =
		      "* lspytaj <kogo>\n"+
		      ">lspytaj Vanesa\n"+
		      "Rzucasz Vanesowi pytajace spojrzenie.\n";
		      break;
		case "luklon sie":
		msg =
		      "* luklon sie <komu>\n"+
		      ">luklon sie\n"+
		      "Klaniasz sie w pas, a w twoich fanatycznych oczach pojawia sie "+
		      "wyraz szacunku.\n";
		      break;
		      
		      
		case "o wladzach":
		msg = "Najwyzsza wladza w gildii jest w tej chwili Konsul. "+
		      "To stanowisko jest obsadzone przez poteznego maga - "+
		      "Vanesa. Mozna sie z nim skontaktowac poczta lub "+
		      "osobiscie w jego gabinecie w karczmie.\n";
		      break;
		case "o lpoprzyj":
		msg = "Ta komenda popierasz starania jakiegos czlowieka o wstep "+
		      "do Bractwa Lesniczych. Jednak zanim to zrobisz, zastanow "+
		      "sie czy nie jest to aby zakamuflowany przeciwnik.\n"+
		      "Sprobuj takze 'lpomoc o zasadach'.\n";
		      break;
		case "o kurtce":
		msg = "Ta skorzana kurtka jest oznaka czlonkowstwa w Bractwie "+
		      "Lesniczych. Jezeli w wyniku jakichs dzialan, albo na przyklad "+
		      "smierci, stracisz ja, zglos sie niezwlocznie do Mistrza stojacego "+
		      "w karczmie i zapytaj go o nowa kurtke.\n";
		      break;
		default:
		msg = "+--------------------------------------------------------------------------+\n"+
		      "+          		LPOMOC dla Bractwa Lesniczych                      +\n"+
		      "+								  	   +\n"+
		      "+ Dostepne tematy pomocy  :						   +\n"+
		      "+ * lpomoc o gildii							   +\n"+
		      "+ * lpomoc o tytulach							   +\n"+
		      "+ * lpomoc o zasadach 							   +\n"+
		      "+ * lpomoc o emotach							   +\n"+
		      "+ * lpomoc o wladzach							   +\n"+
		      "+ * lpomoc o kurtce							   +\n"+
		      "+ * lpomoc o lpoprzyj							   +\n"+
		      "+ * lpomoc - ten ekran 							   +\n"+
		      "+									   +\n"+
		      "+--------------------------------------------------------------------------+\n";
		break;
	}
	write (msg);
	return 1;
}		
		      
		      
int
lpoprzyj (string str)
{
	object *ob;
	sprawdz_wlasciciela ();
	if (!ma_wlasciciela)
		return 0;
	if (!str)
	{
		notify_fail ("Chyba lpoprzyj kogo?\n");
		return 0;
	}
	
	ob = FIND_STR_IN_OBJECT (str,environment (this_player ()), PL_BIE);
	
	
	if ((!ob) || (! living (ob[0])))
	{
		notify_fail ("Kogo chcesz lpoprzec?\n"+
		"Nie widze tu nikogo takiego.\n");
		return 0;
	}
	if (ob[0] -> query_race_name() != "czlowiek")
	{
		notify_fail("Nie mozesz poprzec nieludzia, przeciez to twoj wrog!\n");
		return 0;
	}
	ob[0] -> set_skill (49997,1);
	write ("Poparles starania "+ ob[0] -> query_name (1)+ " o wstep do Bractwa.\n");
	tell_object (ob[0], this_player () -> query_name (0) + " poparl" +
	this_player () -> koncowka("","a","") + " twoje starania o wstep do "+
	"Bractwa Lesniczych.\n");
	return 1;
}

	