/*
 * Shadow Lesnych Elfow
 * by Tanis
 */

#include <macros.h>

inherit "/std/guild/guild_race_sh";

#include "ogolne.h"
#include "lelf.h"

object my_owner;

void daj_mu_soula_lelfow(object kto);

string *kto_mnie_bil=({});

#define KOBIETA my_owner->query_gender()

void
init_race_shadow(string arg)
{
   my_owner = query_shadow_who();
}

int
query_guild_tax_race() 
{ 
    return TAX; 
}

string 
query_guild_name_race()
{
   return GUILD_NAME;
}

string
query_guild_style_race()
{
    return GUILD_STYLE;
}

string 
query_guild_title_family_name()
{ 
    return"";
}

string
query_guild_title_race()
{
    int gstat;
    string str = "";
    gstat = my_owner -> query_stat(6);

    str = jaki_tytul(my_owner);

    if((GILDIA)->jest_radnym(my_owner->query_real_name()))
    {
      if(KOBIETA) str += ", Starsza Rady Lesnych Elfow";
      else str += ", Starszy Rady Lesnych Elfow";
    }  
    
    return str;
    
}

int
query_guild_not_allow_join_race(object gracz, string typ, string styl, string nazwa)
{
    if (::query_guild_not_allow_join_race(gracz, typ, styl, nazwa))
	return 1;

    return 0;
}

int
query_guild_keep_player(object gracz)
{
    setuid();
    seteuid(getuid());
    
    my_owner=gracz;

    (GILDIA)->logowanie(gracz);
    
    return 1;
}

void
daj_mu_soula_lelfow(object delikwent)
{
    delikwent->add_cmdsoul(SOUL);
    delikwent->update_hooks();
}

void
zabierz_mu_soula_lelfow(object gracz)
{
    gracz->remove_cmdsoul(SOUL);
    gracz->update_hooks();
}

void
dodaj_do_listy_atakujacych(object kogo)
{
   string imie=kogo->query_real_name();

   kto_mnie_bil=kto_mnie_bil+({imie}); 
}

void
usun_z_listy_atakujacych(object kogo)
{
   string imie=kogo->query_real_name();

   kto_mnie_bil=kto_mnie_bil-({imie});   
}

int
on_mnie_zaatakowal(object kto)
{
  int a;
  string imie=kto->query_real_name();

  for(a=0;a<sizeof(kto_mnie_bil);a++)
     {
        if(kto_mnie_bil[a] == imie) return 1;
     }
  return 0;
}

void
do_die(object ob)
{
    string str;
    
    if ((GILDIA)->query_prawa(ob->query_real_name())>=LEV_CZLONEK && my_owner->query_hp()==0)
    {
      if(on_mnie_zaatakowal(ob))
        {
           (GILDIA)->morderstwo(my_owner, ob);
           usun_z_listy_atakujacych(ob);
        }
    }
    my_owner->do_die(ob);    
}

void
attacked_by(object ob)
{
    string str;
    if (!(GILDIA)->zwroc_osobe(ob->query_real_name()))
	{}
	else if((GILDIA)->zwroc_osobe(ob->query_real_name())[0]==JEST_CZLONKIEM || (GILDIA)->zwroc_osobe(ob->query_real_name())[0]==JEST_RADNYM)
    {
        tell_object(my_owner,"\nZaatakowal cie czlonek Lesnych Elfow "
                   +"!\n\n");
        tell_object(ob,"\nZaatakowal"+ob->koncowka("es","as")
                   + " czlonka Lesnych Elfow ! Jesli zabijesz innego Lesnego Elfa, zostaniesz " 
                   + ob->koncowka("ukarany","ukarana") + " !\n\n");
        ob->usun_z_listy_atakujacych(my_owner);
        dodaj_do_listy_atakujacych(ob);        
    }
    my_owner->attacked_by(ob);    
}

string
query_guild_trainer_race()
{
    return LPATH + "trening";
}

void
guildtell_msg_race(string msg)
{
    string str="";

    // Tylko moze zaczniemy sprawdzac, czy dana osoba ma prawo uzywac guildtella...

    // Wizow ani renegatow nie informujemy!!!
	
	if((GILDIA)->query_prawa(my_owner->query_real_name())!=LEV_CZLONEK && (GILDIA)->query_prawa(my_owner->query_real_name())!=LEV_RADNY) return;

    str="Nagle nie wiadomo skad powial delikatny, chlodny wiatr, niosacy ze soba swiezy zapach deszczu i zielonego lasu. Przed toba pojawia sie twarz ";
	str+=this_player()->query_imie(my_owner,PL_DOP);
	str+=" w migoczacej poswiacie bijacych gdzies daleko blyskawic i dobiega cie ";
	str+=this_player()->koncowka("jego","jej");
	str+=" cichy, melodyjny glos: ";
	str+=msg;
	str+="\nPo chwili wszystko znika, jakby sie nigdy nie wydarzylo.\n";

    //find_player("tanis")->catch_msg(str);
	
	(GILDIA)->zaloguj("GUILDTELL: "+capitalize(this_player()->query_real_name())+"; Powiedzial: "+msg);
	
	my_owner->catch_msg(str);
}