inherit "/d/Imperium/std/undead";
inherit "/std/combat/humunarmed";

#include <mag.h>

#define PRZYMIOTNIKI ({({"potezny","potezni"}), ({"ohydny","ohydni"}),({"pozolkly","pozolkli"}), \
                        ({"przerazajacy","przerazajacy"}), ({"szalony","szaleni"}), \
                        ({"okrutny","okrutni"}),({"demoniczny","demoniczni"})})
#define LICZBA_PRZYMIOTNIKOW 7

#define LIVE_I_NO_FLESH	"_live_i_no_flesh"


object masta;

void
set_master( object ob )
{
masta=ob;
set_follow(masta,0.1,1);
}


void
create_undead()
{
        int i, j;
        i = random(LICZBA_PRZYMIOTNIKOW);
        j = random(LICZBA_PRZYMIOTNIKOW - 1);

        if(j >= i)
           ++j;
        dodaj_przym(PRZYMIOTNIKI[i][0], PRZYMIOTNIKI[i][1]);
        dodaj_przym(PRZYMIOTNIKI[j][0], PRZYMIOTNIKI[j][1]);
    ustaw_odmiane_rasy(({"upior", "upiora", "upiorowi", "upiora", "upiorem",
        "upiorze"}), ({"upiory", "upiorow", "upiorom",
        "upiora", "upiorami", "upiorach"}), PL_MESKI_OS);

    set_gender(1);

    set_alignment(-590);

    set_long("Wielki, demoniczny upior, ktorego postac przeraza cie "+
	"az do szpiku kosci.\n");
    
    set_stats(({ 200, 215, 300, 5, 5, 100 }));

    set_skill(SS_DEFENCE, 80);
    set_skill(SS_PARRY,80);
    set_skill(SS_WEP_POLEARM, 100);
    set_skill(SS_BLIND_COMBAT, 100); // i tak nie uzywa wzroku

    set_cact_time(10);
    
    add_weapon(OBJ+"kosa");

    add_prop(LIVE_I_UNDEAD, 100);
    add_prop(LIVE_I_NO_CORPSE, 1);
    add_prop(NPC_I_NO_FEAR, 1);
    add_prop(LIVE_I_NEVERKNOWN,1);

    jak_pojawiac_sie(" pojawia sie znikad.");
    jak_znikac(" rozpada sie w pyl pod wplywem pierwszych promieni slonca.");
    jak_znikac_podczas_walki(" rozpada sie w pyl pod wplywem pierwszych promieni slonca.");

    set_living_name("created_by_nekro");
    
}

do_die(object killer)
{
        tell_room(environment(killer), "Upior znika.\n");
        ::do_die(killer);
}


void
special_attack( object wrog )
{
int i;
object paral;

object *enemy = masta->query_enemy(-1);

    if (!masta)
	this_object()->remove_object();

	for ( i = 0; i < sizeof(enemy); i++ )
	    {
	    if (enemy[i]->query_attack() != this_object() )
	    enemy[i]->attack_object(this_object());
	    }
this_object()->set_follow(masta,0.1,1);	    

    i = random(100);
    
    

}


public int
block_exit()
{
int r;
    string  action = query_verb();

    if (!sizeof(({ this_player() }) & query_enemy(-1)))
    {
    return 0; // this_player() isnt fignting us
    }

    r = random(100);

    if ( r <= 45 )
        {
        TP->catch_msg(""+QCIMIE(TO,PL_MIA)+" blokuje ci droge ucieczki.\n");
        tell_room(environment(TO),""+QCIMIE(TO,PL_MIA)+" blokuje "+
        ""+QIMIE(TP,PL_CEL)+" droge ucieczki.\n",({TP}));
                 return 1;
        }
return 0;
}



				 
    
public void
init_living()
{
string *exit;
int size;
    ::init_living();

    if (environment(this_object()))
    {
        exit = environment(this_object())->query_exit_cmds();
        size = sizeof(exit);
            while (--size >= 0)
            {
	    add_action(block_exit, exit[size]);
    }
  }
}
				    




    
