
/* Shadow dla gildii ochroniarzy.
 *
 * Napisal Mithandir. Maj 1999
 
 * Uzywane definicje:
 
 * ADMIN - obiekt zarzadzajacy z funkcjami:
 *   query_ranga(object tp) - zwraca range gracza tp.
 *   query_kapitan() - zwraca stringa z imieniem kapitana.
 *   aktualne() - wyswietla komunikaty itp, wywolywane za kazdym zalogowaniem
 *   		    gracza i tylko wtedy.
 *   trzeba_usunac(string imie) - zwraca 1, jesli gracz zostal w czasie nie-
 *		obecnosci usuniety, usuwajac go jednoczesnie.
 * TRENER - obiekt trenujacy czlonkow gildii ( potrzebny, zeby nie decayowaly )
 *							 	im skille
  * TYTULY - tablica tytulow z indexami zgodnymi z query_ranga()
 * TYTULYZ - nie wymagane, ale zdefiniowenie tego jak wyzej pozwala na podzial
 * 		tytulow na meskie i zenskie
 * SOUL - string ze sciezka do pliku soula
 * TAX - aktualny podatek gildii.
 * Oczywiscie nie musza to byc sztywne wartosci, moga byc funkcje etc.
 */


inherit "/std/guild/guild_occ_sh";

#include "zol.h"

object my_owner;

#define KOBIETA my_owner -> query_gender ()

// Jesli nie ma specjalnych tytulow dla kobiet, wstawiamy meskie
#ifndef TYTULYZ
#define TYTULYZ TYTULY
#endif

#include "mith.h"

int
query_guild_tax_occ()
{
/*
 *	Podatek:
 * 	Skille: 

 *      Specjale: 	 =			       
 *	W sumie:				     = 
 */

    return TAX;
}

string
query_guild_style_occ()
{
    return GUILD_STYLE;
}

string
query_guild_name_occ()
{
    return GUILD_NAME;
}

string
query_guild_title_occ()
{
	int ranga=ADMIN->query_ranga(my_owner);
	return TYTULY[ranga];
}


int
query_ranga_ze_stata()
{
    int gstat;
    gstat = my_owner -> query_stat(7);
    if(gstat >= 150)
    	return 9;
    if(gstat >= 135)
    	return 8;
    if(gstat >= 120)
    	return 7;
    if(gstat >= 105)
    	return 6;
    if(gstat >= 85)
    	return 5;
    if(gstat >= 65)
    	return 4;
    if(gstat >= 40)
    	return 3;
    if(gstat >= 15)
    	return 2;
    if(gstat >= 1)
    	return 1;
    return 0;
   
}

int
query_guild_keep_player(object player)
{
    /*zwracajac 0 wyrzucamy gracza z gildii*/
    setuid();
	seteuid(getuid());

    if (ADMIN->trzeba_usunac(player->query_real_name()))
   	return 1;
    ADMIN->aktualne();
    
    my_owner = player;
    set_alarm(0.01, 0.0, "dodaj_soula", player);

    return 1;
}

void
dodaj_soula(object komu)
{
	string soul=SOUL;
    if (komu->add_cmdsoul(soul))
    {
    komu->update_hooks();
    komu->update_cmdsoul_list ();
    }
    else komu->catch_msg("Nie udalo sie dodac ci soula. Zglos sie do opiekuna gildii.\n");
    my_owner = komu;
}

void
odbierz_soula(object komu)
{
    komu->remove_cmdsoul(SOUL);
    komu->update_hooks();
}

int wyrzucmy_go(object kogo)
{
    odbierz_soula(kogo);
    return remove_guild_occ();
}
 
mixed 
query_guild_trainer_occ()
{
    return TRENER;
}

mixed
query_guild_skill_name(int skill)
{
	return LOCAL_SKILLS[skill][0];
}

// Nie wiem, co to robi, ale domyslam sie, ze gdzies w ogolnoarkadiowym
// kodzie traktuje sie szefow gildi specjalnie. 
int
query_guild_leader()
{
   if (my_owner->query_guild_leader()) return 1;
   
   return (ADMIN->query_kapitan()==my_owner->query_real_name());
}