#pragma strict_types

inherit "/std/object.c";


#include "ogolne.h"

#define CZESTOTLIWOSC_MIN 2.0
#define PENETRATION       50
#define TO_HIT            50
#define SZANSA            90

void
zapisz(string co, object wrog)
{
  string str;

  str = "Obiekt: Lucznicy, Wrog: " + capitalize(wrog->query_real_name()) + ". " + co + " " + ctime(time()) + "\n";

  write_file(PATH + "npc/walka.log",str);
}

void
create_object()
{
    ustaw_nazwe(({ "lucznicy", "lucznicy", "lucznicy", "lucznicy", 
        "lucznicy", "lucznicy" }), ({ "lucznicy", "lucznicy", 
        "lucznicy", "lucznicy", "lucznicy", "lucznicy" }) );
        
    add_name("lucznicy");

    add_pname("lucznicy");

    set_long("Ten opis nie powinien Ci sie nigdy pojawic. Skontaktuj sie " +
        "z jakims archem.\n");
    
    set_no_show();
    set_no_show_composite(1);

    add_prop(OBJ_M_NO_DROP,     "Poloz co?\n");
    add_prop(OBJ_M_NO_GIVE,     "Daj co komu?\n");
    add_prop(OBJ_M_NO_TELEPORT, 1);
    add_prop(OBJ_M_NO_STEAL,    1);
    add_prop(OBJ_M_NO_SELL,     1);
    add_prop(OBJ_M_NO_BUY,      1);

    remove_prop(OBJ_I_WEIGHT);
    remove_prop(OBJ_I_VOLUME);
    remove_prop(OBJ_I_VALUE);

}

string
jaki_efekt(int ile)
{
    switch (ile)
    {
    case 0..4:
	return "drasnela cie w ";
	break;
    case 5..9:
	return "lekko rani cie w ";
	break;
    case 10..19:
	return "rani cie w ";
	break;
    case 20..49:
	return "powaznie rani cie w ";
	break;
    case 50..79:
	return "bardzo ciezko rani cie w ";
	break;
    default:
	return "masakruje ci ";
	break;
    }
}

void
strzelaj(object do_kogo)
{
  int a;
  mixed *jak_dostal;

  if(!environment(do_kogo)->query_prop(ROOM_I_INSIDE))
  {

  a=random(100);

  if(!(a>SZANSA))
    {
     jak_dostal=do_kogo->hit_me(PENETRATION,W_IMPALE,TO_HIT,this_object(),-1);
   
  if(!jak_dostal[4])
    {
     do_kogo->catch_msg("Nadlatujaca z korony najblizszego drzewa strzala "+jaki_efekt(jak_dostal[0]) + jak_dostal[1] + "!\n");
     tell_room(environment(do_kogo),"Nadlatujaca z korony najblizszego drzewa strzala trafia " + QIMIE(do_kogo,PL_DOP) + " w " + jak_dostal[1] + " !\n",({do_kogo}));     
    }
 else 
     {
       write("Nadlatujaca z korony najblizszego drzewa strzala " + jaki_efekt(jak_dostal[0]) + jak_dostal[1] + ", jednak "+ jak_dostal[4]->query_short() + " oslabia nieco skutki trafienia.\n");
       tell_room(environment(do_kogo),"Nadlatujaca z korony najblizszego drzewa strzala trafia " + QIMIE(do_kogo,PL_DOP) + " w " + jak_dostal[1] + " !\n",({do_kogo}));
     } 

	 do_kogo->do_die(this_object());

// DEBUG  write(jak_dostal[0]+", "+jak_dostal[1]+", "+jak_dostal[2]+", "+jak_dostal[3]+" !\n");
 }
 else
    {  
     do_kogo->catch_msg("Nadlatujaca z korony najblizszego drzewa strzala mija cie o wlos !\n");
     tell_room(environment(do_kogo),"Nadlatujaca z korony najblizszego drzewa strzala mija " + QIMIE(do_kogo,PL_DOP) + " o wlos !\n",({do_kogo}));
    }
  }
    set_alarm((itof(random(3))+CZESTOTLIWOSC_MIN), 0.0, "strzelaj",do_kogo);
}

void
rozpocznij_ostrzal(object kto)
{
 if(!environment(kto)->query_prop(ROOM_I_INSIDE))
 {
 write("Nagle z wysoka, z koron drzew zaczely sypac sie na ciebie strzaly ukrytych tam lucznikow.\n");
 }
 strzelaj(kto);
}

void
zacznij_strzelac()
{
 object gracz;

 gracz=this_player();

 if(!environment(gracz)->query_prop(ROOM_I_INSIDE))
 {
  set_alarm(itof(random(6))+3.0, 0.0, "rozpocznij_ostrzal",gracz);
 }
}

void
notify_you_killed_me(object kogo_zabilem)
{
   // ::notify_you_killed_me(kogo_zabilem);
	
	zapisz("Ustrzelilem lobuza!",kogo_zabilem);
	
	remove_object();
	
}