/* 
 * Kompania Krogulca
 *
 * Copyright(C):    Khazzar (jedrekz@pascom.pl)
 * Data:            26.08.2003
 * 
 */

inherit "/std/guild/guild_occ_sh";
#include "def.h"

public int
query_guild_tax_occ()
{
    return GUILD_TAX;
}

public string
query_guild_name_occ()
{
    return GUILD_NAME;
}

public string
query_guild_title_occ()
{
    string nazwisko = "";
    string funkcja  = "";

    if ( ENGINE->query_data(shadow_who, NAZWISKO) != "" )
        nazwisko = ENGINE->query_data(shadow_who, NAZWISKO) + ", ";

    if ( ENGINE->query_data(shadow_who, FUNKCJA) != "" )
        funkcja = ", " + ENGINE->query_data(shadow_who, FUNKCJA);

    return (nazwisko + TYTULM[ENGINE->query_data(shadow_who,RANGA)] + 
            " Kompanii Krogulca" + funkcja);

}

static int
query_guild_keep_player(object player)
{
    setuid();
    seteuid(getuid());

    if ( !ENGINE->query_member(player) )
    {
        notify_fail("Wystapil blad. Funkcja remove_autoshadow.\n");
        if ( !player->remove_autoshadow(TO) ) return 0;

        player->set_guild_pref(7, 0);
        player->clear_guild_stat(7);

        player->remove_cmdsoul(SOUL);
        player->update_hooks();
        player->update_cmdsoul_list();

        player->catch_msg("Zostales wyrzucony z Kompanii Krogulca!\n");
        player->command("zakoncz");
        return 1;        
    }    

    set_alarm(0.1,0.0,"add_soul",player);
    return 1;

}

public void
usun_gildia_occ()
{
    setuid();
    seteuid(getuid());

    if ( !shadow_who->remove_autoshadow(TO) )
    {
        write("Wystapil blad. Funkcja remove_autoshadow.\n");
        return ;
    }

    if ( !ENGINE->remove_member(shadow_who) )
    {
        write("Wystapil blad. Funkcja remove_member.\n");
        return ;
    }

    shadow_who->set_guild_pref(7, 0);    
    shadow_who->clear_guild_stat(7);

    shadow_who->remove_cmdsoul(SOUL);
    shadow_who->update_hooks();
    shadow_who->update_cmdsoul_list();

    remove_shadow();

    return ;
}

void
add_soul( object player )
{
    player->add_cmdsoul(SOUL);
    player->update_hooks();
    player->update_cmdsoul_list();
    return ;
}

/*
 * To narazie tylko testy, chce zobaczyc jak to dziala w praktyce. 
 * Jak podziala, to problem balasu z glowy bedzie :)
 */


varargs public mixed
hit_me(int wcpen, int dt, int hitsuc, object attacker, int attack_id,
       int target_hitloc = -1)
{
    int max_pen = (1000/(shadow_who->query_stat(7))*100);

    if ( wcpen > max_pen ) wcpen = max_pen;
    return ::shadow_who->hit_me(wcpen,dt,hitsuc,attacker,attack_id,
                                target_hitloc);
}
