/*
 *   Pokoj rady Lesnych Elfow
 *   by Tanis - luty 1999
 */

inherit "/d/Imperium/std/room";

#include "ogolne.h"
#include "lelf.h"

object ksiega;

void
create_imperium_room() 
{
  setuid();
  seteuid(getuid());
  
  add_item("urne","@@oglada_urne");

  add_item(({"stol","biurko","blat"}),"Jest to lekko pochyly blat umocowany do sciany. "
     + "Spoczywa na nim gruba ksiega.\n");

  set_short("Siedziba rady Lesnych Elfow");
  set_long("@@dlugi_opis");

  add_exit(LPATH+"pokoj_glosowan.c","polnoc",0,0);
  add_prop(ROOM_I_LIGHT, 5);
  add_prop(ROOM_I_INSIDE, 1);

  ksiega=clone_object(LPATH + "ksiega_rady.c");
  ksiega->move(this_object());

}

string
opis_urny()
{
   if((GILDIA)->stan_glosowania()==0)
    {
      return "kamienna urne";
    }
   return "";
}

string
oglada_urne()
{
   if((GILDIA)->stan_glosowania()==0) return "Jest to duza, kamienna urna uzywana podczas glosowania na rade Lesnych Elfow.\n";
   else return "W tej chwili nie ma tutaj urny, pewnie dlatego, ze trwa glosowanie!\n";
}

string
dlugi_opis()
{
  return ("Jestes w niezbyt duzej, opartej o drzewo chacie. "
     + "Choc jest zbudowana z drewna, a sufit tworza glownie liscie, "
     + "sprawia ona wrazenie bardzo suchej i przytulnej. "
     + "Pod jedna ze scian stoi cos na ksztalt biurka albo stolu. "
     + "Na polnocy znajduje sie wyjscie z chaty. "
     + opis_urny() + "\n");
}

void
tzrezygnuj(string czy_tak,object kto)
{
    (GILDIA)->zrezygnuj(kto,czy_tak);
	return;
}

int
zrezygnuj(string str)
{
	 if((GILDIA)->stan_glosowania()!=0)
	 {
	     notify_fail("Nie mozesz tego uczynic w trakcie trwania wyborow!\n");
		 return 0;
	 }
	 
       write("Czy na pewno chcesz zrezygnowac ze stanowiska radnego? [tak/nie]: ");
       input_to("tzrezygnuj",0,this_player());
	   return 1;
}

void
trozwiaz(string czy_tak,object kto)
{
   (GILDIA)->rozwiaz_rade(kto,czy_tak);
}

int
rozwiaz(string str)
{
     if(str!="rade")
	 {
	     notify_fail("Co chcesz rozwiazac? Rade?\n");
		 return 0;
	 }
	 
	 if(!(GILDIA)->stan_glosowania())
	 {
	     notify_fail("Nie mozesz tego uczynic w trakcie trwania wyborow!\n");
		 return 0;
	 }
	 
	 write((GILDIA)->kto_rozwiazuje());

	 write("Czy na pewno chcesz rozwiazac rade Lesnych Elfow? [tak/nie]:");
	 input_to("trozwiaz",0,this_player());
	 return 1;
}

void
twyrzuc(string czy_tak,string imie,object kto)
{
  (GILDIA)->wywal(kto,czy_tak,imie);
}

void
wyrzuc_imie(string imie,object kto)
{
  imie=lower_case(imie);
  if((GILDIA)->czy_mozna_wyrzucic(kto,imie))
    {
       write("Czy na pewno wyrzucic czlonka o imieniu " + capitalize(imie)+ "? [tak/nie]: ");
       input_to("twyrzuc",0,imie,kto);
    }
}

int
wyrzuc(string str)
{
    write("Podaj imie tego, kogo chcesz wyrzucic: ");
    input_to("wyrzuc_imie",0,this_player());
    return 1;
}

void
sprawdz_imie(string str,object kto)
{
    kto->catch_msg((GILDIA)->sprawdz_osobe(str));
}

int
sprawdz(string str)
{
    write("Podaj imie tej osoby, ktorej status chcesz sprawdzic: ");
    input_to("sprawdz_imie",0,this_player());
    return 1;
}

int
przejrzyj(string str)
{
    (GILDIA)->przeglada_podania(this_player(),str);
	return 1;
}

void
usun_imie(string imie,object kto)
{
    (GILDIA)->usun_podanie(kto,imie);
    return;
}

int
usun(string str)
{
    if(lower_case(str)!="podanie")
	{
	    notify_fail("Co chcesz usunac? Podanie?\n");
		return 0;
	}
    write("Podaj imie osoby, ktorej podanie chcesz usunac: ");
    input_to("usun_imie",0,this_player());
    return 1;
}

void
przeczytaj_imie(string imie,object czytajacy,string jakie)
{
     imie=lower_case(imie);
	 jakie=lower_case(jakie);
	 
	 if(!imie)
	 {
	     czytajacy->catch_msg("Musisz podac jakies imie!\n");
		 return;
	 }
	 
     switch(jakie)
	 {
	     case "podanie":  (GILDIA)->przeczytaj_podanie(czytajacy,imie);
		                  break;
		 case "archiwum": (GILDIA)->wczytaj_z_archiwum(czytajacy,imie);
		                  break;
		 default : czytajacy->catch_msg("Co chcesz przeczytac? Podanie czy archiwum?\n");
		           return;
				   break;
	 }
	 
	return;
}

int
przeczytaj(string str)
{
    str=lower_case(str);
	
    if(str!="podanie" && str!="archiwum")
	{
	   notify_fail("Co chcesz przeczytac? Podanie czy archiwum?\n");
	   return 0;
	}
	
	write("Podaj imie osoby, ktorej podanie chcesz przeczytac: ");
	input_to("przeczytaj_imie",0,this_player(),str);
	return 1;	
}

void
umiesc_imie(string czyje,object kto,string gdzie)
{
    (GILDIA)->przesun_podanie(kto,czyje,gdzie);
	return;
}

int
umiesc(string str)
{
    object kto=this_player();
	
	str=lower_case(str);
	
	if(!str)
	{
	    notify_fail("Co i gdzie chcesz umiescic?\n");
		return 0;
	}

    write("Podaj imie osoby, ktorej podanie chcesz przenosic: ");
    input_to("umiesc_imie",0,kto,str);
	return 1;	  
}

void
poprzyj_imie(string imie,object kto)
{
	(GILDIA)->poprzyj_podanie(kto,imie,1);
	return;
}

int
poprzyj(string str)
{
    write("Podaj imie osoby, ktorej chcesz udzielic poparcia /z kategorii podan aktualnych/: ");
    input_to("poprzyj_imie",0,this_player());
    return 1;
}

void 
init()
{
  ::init(); 

   add_action(zrezygnuj,"zrezygnuj");
   add_action(rozwiaz,"rozwiaz");
   add_action(wyrzuc,"wyrzuc");
   add_action(sprawdz,"sprawdz");
   add_action(przejrzyj,"przejrzyj");
   add_action(usun,"usun");
   add_action(przeczytaj,"przeczytaj");
   add_action(umiesc,"umiesc");
   add_action(poprzyj,"poprzyj");
}

void
enter_inv(object ob, object from)
{
    int a;
    string imie;
    
    imie=ob->query_real_name();
    /*
    if((GILDIA)->query_prawa(imie)<LEV_RADNY)
      {       
         ob->catch_msg("\nNie mozesz tam wejsc! Nie masz odpowiednich uprawnien!\n\n");
         ob->move_living("M",from,1,1);
      }   
    */
    ::enter_inv(ob,from);
}