
/* Shadow Zakonu Rycerskiego Sigmara Mlotodzierzcy
 *
 * Napisal Vanes, 26.10.1997
 */

inherit "/std/guild/guild_occ_sh";

#include "ryc_zak.h"

object my_owner;
object zaatakowany_dobry;
object walczy_dobry;
object *odepchnieci=({});

#define L_I_ZABILEM_DOBREGO_NPCA "zabilem_npca"
#define KOBIETA my_owner -> query_gender ()
#include "mith.h"


int
query_guild_tax_occ()
{
/*
 *	Podatek:
 * 	Skille: 
 *	120 leveli /60 * 1.5% = 	       		3%
 *	235 leveli /60 * 1% =				4%
 *      Specjale: 	 =			       16%
 *	W sumie:				     = 	23%
 *	Poniewaz boje sie sam zejsc zbyt nisko, damy im 25%.
 */

    return 25;
}

string
query_guild_style_occ()
{
    return GUILD_STYLE;
}

string
query_guild_name_occ()
{
    return GUILD_NAME;
}

string
query_guild_title_occ()
{
    int urzad=PRAWA->query_urzad(my_owner->query_real_name());
    int ranga=PRAWA->query_ranga(my_owner);
    if (urzad>-1) return KAPITULA[urzad]+" Zakonu Sigmara Mlotodzierzcy";
    else 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_ranga_z_wieku()
{
	int wiek=PRAWA->query_wiek(my_owner)/43000; // Wychodzi mniej wiecej w dniach
    int ranga=MAX (ftoi(sqrt(itof(wiek))-1.0),1);
   	return ranga;
}   

int query_guild_rank_occ()
{
	if (PRAWA->query_mistrz==my_owner->query_real_name()) return 9;
	if (!PRAWA->sprawdz_prawa(PRAWA_RYCERZA,my_owner)) return 0;
	return MIN(query_ranga_z_wieku(),query_ranga_ze_stata());
}

int
query_guild_keep_player(object player)
{
    /*zwracajac 0 wyrzucamy gracza z gildii*/
    setuid();
	seteuid(getuid());

    if (PRAWA->trzeba_usunac(player->query_imie()))
   	return 1;
    PRAWA->aktualne();
    notify_fail("Jestes zbyt skazony zlem, aby moc pozostac w Zakonie");
    if (player->query_alignment()<=100) return 0;
    
    my_owner = player;
    set_alarm(1.0, 0.0, "dodaj_soula", player);

    return 1;
}

void
dodaj_soula(object komu)
{
	string soul=SOUL;
	switch (PRAWA->query_ranga(komu))
	{
		case 1..3 : soul+=1;
					break;
		case 4..6 : soul+=2;
					break;
		case 7..11: soul+=3;
					break;
	}
    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 Wielkiego Mistrza.\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();
}
/*
int
attack_object(object kogo)
{
	if (kogo->query_npc() && kogo->query_alignment()>0 && zaatakowany_dobry!=kogo)
	{
		if (my_owner!=TP) return 1; 
		my_owner->catch_msg("Jestes pewny, ze chcesz zaatakowac dobra istote? "
			+"Potwierdz to przez ponowne zaatakowanie.\n");
		zaatakowany_dobry=kogo;
		return;
	}
	if (zaatakowany_dobry==kogo)
	{
		my_owner->catch_msg("Atakujesz "+QCIMIE(kogo,PL_BIE)+", zdajac sobie sprawe "
			+"ze zabicie tej dobrej istoty na zawsze splami twoj "
			+"honor.\n");
		my_owner->attack_object(kogo);
		walczy_dobry=kogo;
		return;
	}
	my_owner->attack_object(kogo);
}
*/

notify_you_killed_me(object kogo)
{
	if (kogo==walczy_dobry)  // czyli zabil dobrego npca
	{
		my_owner->catch_msg("Smierc tego niewinnego splamila twoj honor. Nie ma dla "
			+"ciebie miejsca w Zakonie.\n");
		PRAWA->notify_zabil_npca(my_owner,kogo);
		my_owner->notify_you_killed_me(kogo);
		return;
	}
	my_owner->notify_you_killed_me(kogo);
}

stop_fight(mixed elist)
{
	object spec=my_owner->query_prop(LIVE_O_SPELL_ATTACK);
	if (spec && MASTER_OB(spec)==SPEC_OGL)
		my_owner->command("przestan ogluszac");
	my_owner->stop_fight(elist);
}
 
mixed 
query_guild_trainer_occ()
{
    return "/d/Imperium/Zakon/zamek/trening";
}

mixed
query_guild_skill_name(int skill)
{
	return LOCAL_SKILLS[skill][0];
}

int
query_guild_leader()
{
   if (my_owner->query_guild_leader()) return 1;
   
   return (PRAWA->query_urzad(my_owner->query_real_name()))>-1;
}