inherit "/std/monster.c";
#include <macros.h>
#include <stdproperties.h>
#include <ss_types.h>


#define TO this_object()
#define TP this_player()

void
create_monster()
{

    ustaw_odmiane_rasy(({"jezdziec","jezdzca","jezdzcem","jezdzca","jezdzcem",
	    "jezdzcu"}),({"jezdzcy","jezdzcow","jezdzcom","jezdzcow","jezdzcami",
	    "jezdzcach"}),PL_MESKI_OS);
	    
    set_living_name("dark_rider");
	    
    dodaj_przym("umarly","umarli");
    dodaj_przym("czarny","czarni");
    
    add_prop(LIVE_I_NEVERKNOWN,1);
    add_prop(LIVE_S_EXTRA_SHORT," dosiadajacy gnijacej skrzydlatej bestii");
    add_prop(LIVE_I_UNDEAD,100);
    add_prop(LIVE_I_NO_CORPSE,1);

    set_long("Okryta czarna szata postac.\n");

    set_stats(({140,140,140,20,20,150}));

    add_weapon("/d/Imperium/Eventy/kosa.c");
    
    set_skill(SS_DEFENCE,90);
    set_skill(SS_PARRY,90);
    set_skill(SS_WEP_POLEARM,100);
    set_skill(LIVE_I_SEE_INVIS,1);
    set_skill(LIVE_I_SEE_DARK,100);
}


void
atak( string victim, int f )
{
object vic = find_player(victim);
    if (!vic)  {
	tell_room(environment(TO),"Czarny jezdziec odlatuje na swej bestii.\n");
	TO->remove_object();
	return ;
    }
    
    switch(f)  {
    
	case 0:
	    tell_room(environment(vic),"Chlod uderza w ciebie fala, kiedy upiorna, "+
		"czarna postac na uskrzydlonej bestii staje tuz przed toba, "+
		"dzierzac swa nieziemska kose.\n");
	    TO->move(environment(vic));
	    set_alarm(4.0,0.0,"atak",vic->query_real_name(),(f+1));
        break;

	case 1:
	    setuid();seteuid(getuid());
	    TO->move(environment(vic));
	    TO->set_follow(vic,0.1,1);
	    TO->attack_object(vic);
	    vic->catch_msg(QCIMIE(TO,PL_MIA)+" atakuje cie!\n");
	break;
	

    }

}


void
send_rider( string victim )
{
    set_alarm(2.0,0.0,"atak",victim,0);
}


void
gon( object who )
{
    TO->move(environment(who));
    TO->attack_object(who);
}

public int
block()
{
int r;

    string action = query_verb();
    
    if (!sizeof(({ this_player() }) & query_enemy(-1)))  
	return 0;
	
    set_alarm(0.5,0.0,"gon",this_player());
}

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[size]);
	}
}



