/*
 * Urna do glosowania w gildii Lesnych Elfow
 *   by Tanis
 * 
 */

inherit "/std/object.c";

#include "ogolne.h"
#include "lelf.h"

void
create_object()
 {
  setuid();
  seteuid(getuid());

  add_prop(OBJ_M_NO_GET,"Nie mozesz zabrac urny ! Wybory sie jeszcze nie skonczyly !");
  
  set_long("Duza, kamienna urna. Wykonano ja z bialego kamienia. Z pewnoscia jest ciezka, a "
     + "jednak sprawia wrazenie jakby byla lekka i delikatna. Sluzy do przechowywania "
     + "glosow Lesnych Elfow w czasie glosowania na nowa rade gildii. "
     + "Na jednym z bokow znajuje sie tabliczka.\n");
 
  add_item("tabliczke","Jest to tabliczka zwierajaca instrukcje korzystania z urny oraz liste kandydatow. Najlepszym rozwiazaniem jest przeczytanie jej.\n");
  add_cmd_item("tabliczke","przeczytaj","@@tabliczka");

  ustaw_nazwe(({"urna","urny","urnie","urne","urna",
        "urnie"}), ({"urny","urn","urnom","urny","urnami",
        "urnach"}), PL_ZENSKI);

  dodaj_przym("duzy","duzi");
  dodaj_przym("kamienny", "kamienni");
}

string
tabliczka()
{
    string str;
	int a,sz;
	mixed ind;
    mapping wynik=(GILDIA)->query_wynik();
		
    ind = m_indices(wynik);
	
   sz=sizeof(ind);	
	
	str="Urna do glosowania na czlonkow nowej rady.\n";	
	
	 if((GILDIA)->stan_glosowania()==1)
	 {
		     str+="Mozna jeszcze zglaszac kandydatury komenda <zglos kandydature>.\n";
	 }
	 else
	 {
	         str+="Okres zglaszania kandydatur juz sie zakonczyl. Mozesz teraz <oddac glos> na najlepszego Twoim zdaniem kandydata.\n";
     }	 
	 	 
	 if(!sz)
	 {
         str+="W tej chwili jeszcze nikt nie zglosil swojej kandydatury.\n";
	 }
	 else
	 {
	   	 str+="Oto lista zgloszonych kandydatow:\n";

 	   for(a=0;a<sz;a++)
	   {
	     str+="  "+capitalize(ind[a])+", ";
	   }
	   str+="\b\b.\n";
	 }
	   	 
    return str;	 
}

void
oddal_glos(string na_kogo,object kto)
{
    (GILDIA)->oddaj_glos(kto,na_kogo);
    return;
}

int
glosuj(string str)
{
  object kto=this_player();
  
  if(str!="glos")
    {
      notify_fail("Co chcesz oddac? Glos? (Nie podawaj imienia osoby, na ktora chcesz zaglosowac. Podasz je pozniej).\n");
      return 0;
    }
  
  if(!(GILDIA)->czy_moge_glosowac(kto)) return 1;

  if(kto->query_wiz_level())
    {
      notify_fail("Jako czarodziej nie mozesz uczestniczyc w glosowaniu !\n");
      return 0;
    }
  if((GILDIA)->stan_glosowania()!=2)
  {
      notify_fail("Nie mozesz glosowac, gdyz teraz nie czas na to! Poczekaj do konca okresu zglaszania kandydatow!\n");
	  return 0;
  }
    
  write("Imie osoby, na ktora chcesz oddac glos (w Mianowniku): ");
  input_to("oddal_glos",0,kto);  
  return 1;
}

void
zglaszak(string czy_tak,object kto)
{
    if(lower_case(czy_tak)=="tak")
	{
	    (GILDIA)->zglos_kandydature(kto);
		return;
	}
	
	write("Decydujesz sie nie zglaszac swojej kandydatury.\n");
	return;
}

int
kandydat(string str)
{
   object kto=this_player();
   if(str!="kandydature")
   {
       notify_fail("Co chcesz zglosic? Kandydature?\n");
	   return 0;
   }
   
   if((GILDIA)->stan_glosowania()!=1)
   {
       notify_fail("W tej chwili nie mozna juz zglaszac nowych kandydatow!\n");
	   return 0;
   }
   
  write("Czy na pewno chcesz zglosic swoja kandydature w glosowaniu na nowa rade Lesnych Elfow? "
    + "Zgloszonej kandydatury nie mozna juz wycofac! ('tak'/'nie'):\n");
  input_to("zglaszak",0,kto);  
  return 1;
   
}

void
init()
{
  ::init();
  add_action(glosuj,"oddaj");
  add_action(kandydat,"zglos");
}