/*
 *  Pokoj glosowan Lesnych Elfow
 *   by Tanis - maj 1998
 */

inherit "/d/Imperium/std/room";

#include "ogolne.h"
#include "lelf.h"

void
sprawdz_czy_wystawic_urne()
{
   object *tab;
   object urna;
   int a,b;
   
   if((GILDIA)->stan_glosowania()==1 || (GILDIA)->stan_glosowania()==2)
     {
	   tab=all_inventory(this_object());
	   b=sizeof(tab);
	   for(a=0;a<b;a++)
	   {
	      if(tab[a]->id("urna")) return;
	   }
	   urna = clone_object(LPATH + "urna.c");
       urna->move(this_object());
	 }
}

void
create_imperium_room() 
{
  setuid();
  seteuid(getuid());
  
  add_item("chate","Chata na poludniu jest zbudowana z drewna. Jej dach tworza glownie liscie "
    + "drzew. Miesci sie w niej siedziba rady gildii Lesnych Elfow.\n");

  set_short("Przed siedziba rady Lesnych Elfow");
  set_long("Stoisz przed niezbyt duza, drewniana chata na poludniu. "
     + "Miesci sie w niej siedziba rady Lesnych Elfow. Przed chata odbywaja sie zwykle "
     + "glosowania na cala rade, jak i na pojedynczych, nowych czlonkow. "
     + "W czasie glosowan, przed chate wystawiana jest kamienna urna, do ktorej "
     + "nalezy oddawac glosy. "
     + "Na scianie chaty wisi duza, drewniana tablica z imionami wszystkich czlonkow "
     + "gildii Lesnych Elfow. Obok umieszczono liste z imionami osob pragnacych wstapic do gildii, a ktore oczekuja na poparcie.\n");

  add_item(({"tablice","drewniana tablice","duza tablice","duza drewniana tablice"}),"Na tablicy "
     + "umieszczono imiona wszystkich czlonkow gildii Lesnych Elfow. Z pewnoscia da sie ja przeczytac.\n");

  add_cmd_item(({"imiona","tablice","drewniana tablice","duza tablice","duza drewniana tablice"}),"przeczytaj","@@lista_czlonkow");

  add_item("liste","Na tej liscie umieszczono imiona osob, ktore pragna wstapic do Lesnych Elfow, ale potrzebuja do tego poparcia. Z pewnoscia da sie przeczytac.\n");

  add_cmd_item("liste","przeczytaj","@@lista_czekajacych");

  add_exit(LPATH+"pokoj_rady.c","poludnie","@@nie_radny",1);
  add_exit(LPATH+"tablica_room.c","polnoc",0,1);

  add_prop(ROOM_I_INSIDE, 0);
  
  sprawdz_czy_wystawic_urne();
}

void
enter_inv(object kto, object skad)
{
    sprawdz_czy_wystawic_urne();
	::enter_inv(kto,skad);
}

void
leave_inv(object kto, object skad)
{
    sprawdz_czy_wystawic_urne();
	::leave_inv(kto,skad);
}

void
reset_imperium_room()
{
  ::reset_imperium_room();

  sprawdz_czy_wystawic_urne();
}

string
lista_czekajacych()
{
    string *lista;
	int a,b;
	string napis;

    napis="W tej chwili na poparcie czekaja nastepujace osoby:\n";

     lista=get_dir(P_AKTUALNE);
	 
     if(!sizeof(lista))
       {
	       return "W tej chwili na liscie nie ma ani jednego imienia...\n";
       }
	   
     lista=sort_array(lista);
	
	 b=sizeof(lista);
	
	 for(a=0;a<b;a++) napis+=(capitalize(lower_case(lista[a][0..(strlen(lista[a])-3)]))+", ");
	 
	 napis+="\b\b.\nJesli uwazasz, ze ktoras z tych osob jest godna przyjecia do Lesnych Elfow, <poprzyj> ja.\n";

	return napis;
}

string
lista_czlonkow()
{
  string *czlonkowie=({});
  string *radni=({});
  string napis,napis1;
  string str="Czlonkowie Gildii Lesnych Elfow :\nRada Gildii :\n";
  int a,b,c,d;

  czlonkowie=(GILDIA)->lista_osob(JEST_CZLONKIEM);

  radni=(GILDIA)->lista_osob(JEST_RADNYM);

  czlonkowie=czlonkowie-radni;

  czlonkowie=sort_array(czlonkowie);
  radni=sort_array(radni);

 for(c=0;c<sizeof(radni);c++)
 {
  napis=capitalize(radni[c]);

  str=str+"        "+napis;

  b=20-strlen(napis);

  for(a=0;a<b;a++)
     {
        str=str+" ";
     }
 }

  if(sizeof(radni)==0) str=str+"W tej chwili nie ma ani jednego czlonka rady Lesnych Elfow...";

  str=str+"\n";

  str=str+"\nCzlonkowie Gildii :\n";

  c=0;

  for(a=0;a<sizeof(czlonkowie);a++)
     {
       napis=capitalize(czlonkowie[a]);
       str=str+"        "+napis;

        b=20-strlen(napis);

        for(d=0;d<b;d++)
           {
              str=str+" ";
           }
        c++;
        if(c==3)
          {
            c=0;
            str=str+"\n";
          }

     }
  if(c!=0)   str=str+"\n";
  str=str+"\n";

  this_player()->more(str);

  return "";
}

int
nie_radny()
{
 if((GILDIA)->query_prawa(this_player()->query_real_name())>=LEV_RADNY) return 0;
 
 write("Tylko czlonkowie rady Lesnych Elfow maja prawo tam wchodzic!\n"); 
 return 1;
}

void
poprzyj_imie(string imie,object kto)
{
	(GILDIA)->poprzyj_podanie(kto,imie,2);
	return;
}

int
poprzyj(string str)
{
    if((GILDIA)->query_prawa(this_player()->query_real_name())>LEV_CZLONEK)
	{
	   notify_fail("Jako radny nie mozesz udzielac tego typu poparcia!\n");
	   return 0;
	}	   
    write("Podaj imie osoby, ktorej chcesz udzielic poparcia /z umieszczonej tutaj listy/: ");
    input_to("poprzyj_imie",0,this_player());
    return 1;
}

void 
init()
{
  ::init(); 

   add_action(poprzyj,"poprzyj");
}