/*
 *  Shadow "Zgromadzenia Halflindzkiego"
 *  Mithandir
 *  27.01.1999r
*/

inherit "/std/guild/guild_race_sh";

#include "halfy.h"

string *rada=({});

int 
query_guild_tax_race()
{
  return TAX;
}

string
query_guild_style_race()
{
  return GUILD_STYLE;
}

string
query_guild_name_race()
{
  return GUILD_NAME;
}

string
query_guild_trainer_race()
{
  return TRENER;
}

/* Do poprawy, kiedy juz bedza tytuly.
string
query_guild_title_race()
{
	string *meskie= ({"Mlodzik z",
			"Brzuchacz z",
			"Smierdziel z",
			"Obzartuch z",
			"Flakorwij z",
			"Mlocarz z",
			"Grzmociciel z",
			"Wyrwidab z",
			"Bohatyr Gorowy"
			});
	string *zenskie= ({"Mlodka z",
			"Brzuchata z",
			"Sierdziela z",
			"Obzartucha z",
			"Flakrowija z",
			"Mlocarka z",
			"Wyrwigora z",
			"Grzmocicielka z",
			"Bohatyrka"
			});
	int ile=sizeof(meskie)-1;
	int zakres=65/ile;
	object kto=query_shadow_who();
	string *tytuly=(kto->query_gender()) ? zenskie:meskie;
	int numer= min (kto->query_stat(SS_RACE)/zakres-1, ile-1);
        if(kto->query_real_name()==herszt)
        {
           if(kto->query_gender()) return "Hersztka Ogrzej Kompanii";
           return "Herszt Ogrzej Kompanii";
        }
	if (numer<0) numer = 0;
	
	return tytuly[numer]+" Ogrzej Kompanii";
}
	
*/
	
int
query_guild_keep_player(object player)
{
  if (!CZY_HALF(player))
    {
     write("Nie jestes juz "+player->koncowka("halflingiem", "halflinka")+", wiec jestes "+
        "zmuszon"+player->koncowka("y","a")+"opuscic zgromadzenie...\n");
    set_alarm(1.0,0.0, &(wywalenie_z_halflow(player)));
    return 0;
    }
  set_alarm(1.0,0.0,"dodaj_soula",player);
  setuid();
  seteuid(getuid());
  if (!restore_object(SAVE))
  {
	rada+=({player->query_real_name()});
  	save_object(SAVE);
  }
  
  return 1;
}

void dodaj_soula(object komu)
{
  komu->add_cmdsoul(SOUL);
  komu->update_hooks();
  komu->update_cmdsoul_list();
}

void 
remove_soula(object komu)
{
  komu->remove_cmdsoul(SOUL);
  komu->update_hooks();
}

mixed
query_rada(int i=0)
{
	if (!i) return rada;
	if (i>sizeof(rada)) return 0;
	return rada[i-1];
}

set_rada(string kogo, int gdzie)
{
	rada[gdzie]=({ob->query_real_name()});
	save_object(SAVE);
}

int
nie_wsio(object ob)
{
  return (living(ob)) && (member_array(SOUL,ob->query_cmdsoul_list())!=-1);
}

object * czlonkowie()
{
  object *tab;
  tab=all_inventory(environment(shadow_who));
  tab=filter(tab,nie_wsio);
  return tab;
}

int wywalenie_z_halfow(object kogo)
{
  int i;
  object *tab;
  string str;
  string name=kogo->query_real_name();
  tab=deep_inventory(kogo);
  for (i=0; i<sizeof(tab); i++)
   if(tab[i]->obiekt_halfow())
   tab[i]->remove_object();
   
   if(kogo->query_default_start_location()==HALFY_SYP)
   {
     if(!kogo->set_default_start_location(IMPERIUM_STANDARD))
   {
     write("Wystapil blad zwiazany z przydzieleniem nowej lokacji startowej. "+
           "Zglos to komenda <zglos blad>.\n");
     str=sprintf("%-16s:%s blad set_default_location\n",name,ctime(time()));
     write_file(BUGS,str);
   }
   }
   else write(kogo->query_default_start_location());
   
   if(!kogo->clear_guild_stat(SS_RACE))
   {
     str=sprintf("%-16s:%s blad clear_guild_stat\n",name,ctime(time()));
     write_file(BUGS,str);
   }
   if(remove_guild_race())
    {
     remove_soula(kogo);
     return 1;
    }
   write("Niestety wystapil jakis blad przy wystepowaniu ze Zgromadzenia. "+
         "Skontaktuj sie z kims z czarodziei.\n");
   str=sprintf("%-16s:%s blad remove_guild_race \n");
   write_file(BUGS,str);
   return 0;
}

