inherit "/d/std/bron";
inherit "/lib/keep";  //dzieki temu mozemy uzyc na tym komendy zabezpiecz
#include <stdproperties.h>
#include <macros.h>
#include <filter_funs.h>
#include <wa_types.h>
#include <ss_types.h>
#include <formulas.h>
#include <options.h>
object wielder;
void
create_weapon()
{
    set_autoload();
    ustaw_nazwe(({"sztylet", "sztyletu", "sztyletowi", "sztylet", "sztyletem",
                  "sztylecie"}),
                ({"sztylety", "sztyletow", "sztyletom", "sztylety",
                  "sztyletami", "sztyletach"}), PL_MESKI_NZYW);

    dodaj_przym("ostry", "ostrzy");
    dodaj_przym("falisty", "falisci");
    set_long("Jest to ostry falisty sztylet, wykonany z dziwnie blyszczacego "+
	     "sie metalu. Dodatkowo na przy samym koncu ostrza umieszczono "+
	     "male haczyki "+
	     "dzieki czemu przy wyciaganiu go z ciala przeciwnika zadaje on "+
	     "dodatkowe obrazenia. Na rekojesci zauwazasz jakis znak.\n");
    add_item("znak","Jest to zakapturzona postac z kosa w reku, zapewne "+
	     "jest to postac smierci.\n");                   
    set_hit(40);  /* Wspolczynnik okreslajacy prawdopodobienstwo trafienia. */
    set_pen(30);   /* Wspolczynnik okreslajacy zadawane uszkodzenia. */

    set_wt(W_KNIFE);   /* Typ broni - sztylet. */
    set_dt(W_IMPALE);  /* Bron klujaca. */
    set_hands(W_ANYH);  // Przeznaczona dla obojetnie ktorej reki
    set_wf(this_object());
    set_alarm(0.5,0.0,"add_wielder");
}
mixed
wield(object what)
{
   set_alarm(0.1,0.0,"add_wielder");
   write("Gdy dobywasz ostrego falistego sztyletu, jego ostrze "+
   "swieci sie chwile czerwonym swiatlem.\n");
   say(QIMIE(this_player(),PL_MIA) + " dobywa ostrego falistego sztyletu, "+
   "a jego ostrze swieci sie chwile czerwonym swiatlem.\n");
   return 1;
}

void
add_wielder()
{
    wielder = environment(this_object());
}

object
query_wielder()
{
    return wielder;
}    

mixed
unwield(object what)
{
   set_this_player(wielder);
   if(environment(this_object())!=wielder) 
       return 1;
   write("Opuszczasz ostry falisty sztylet.\n");
   say(QCIMIE(this_player(),PL_MIA)+" opuszcza ostry falisty sztylet.\n");     
   return 1;
}

static void
tell_watcher(string str, object enemy)
{
   object me,*ob;
   int i;

   me = wielder;
   ob = FILTER_LIVE(all_inventory(environment(me))) - ({ me });
   ob -= ({ enemy });
   for (i = 0; i < sizeof(ob); i++)
   if (!ob[i]->query_option(OPT_BLOOD) && CAN_SEE_IN_ROOM(ob[i]))
      {
      if (CAN_SEE(ob[i], me))
         ob[i]->catch_msg(str);
      else
         tell_object(ob[i], "Ktos trafil kogos.\n");
   }
}
public mixed
did_hit(int aid,string hdesc,int phurt,object enemy,int dt,int phit,int dam,int tohit,mixed
def_ob,object armour)
{


   wielder = query_wielded();

    switch(phurt)
   {
      case -1:
      case 0:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 1..4:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 5..9:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 10..19:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 20..34:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 35..45:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 46..55:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 56..65:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;
      case 66..87:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);
      break;      
      case 88..99:
      wielder->catch_msg("Bierzesz duzy zamach reka, i pchasz ostry falisty"+
      "sztylet do przodu, mierzac w "+QIMIE(enemy,PL_DOP)+"...\n"+
      "sztylet wbija sie w "+hdesc+" tworzac mala rane.\n"+
      "Szybkim ruchem wyciagasz sztylet, a jego haczyki wbijaja sie w skore "+
      "twego wroga, tworzac ogromna rane, przez ktora dostrzegasz biel kosci. "+
      QIMIE(enemy,PL_DOP)+"wije sie w spazmach bolu.\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA)+" bierze duzy zamach reka, "+
      "i pcha sztylet do przodu, mierzac w ciebie ...\n"+
      "sztylet wbija sie ci w "+hdesc+" tworzac mala rane.\n"+QCIMIE(enemy,PL_MIA)+
      " szybkim ruchem wyciaga sztylet, a jego haczyki wbijaja sie ci w twa skore, "+
      "tworzac ogromna rane, przez ktora dostrzegasz biel kosci. Wijesz sie w "+
      "spazmach bolu.\n");
      tell_watcher(QCIMIE(wielder,PL_MIA)+" bierze duzy zamach reka, "+
      "i pcha sztylet do przodu, mierzac w "+QIMIE(enemy,PL_DOP)+" ...\n"+
      "sztylet uderza w "+hdesc+" "+QIMIE(enemy,PL_DOP)+" tworzac mala rane.\n"+
      "Gdy "+QCIMIE(wielder,PL_MIA)+ "szybkim ruchem wyciaga sztylet, to jego "+
      "haczyki wbijaja sie w skore "+QIMIE(enemy,PL_DOP)+" ,tworzac ogromna "+
      "rane, przez ktora dostrzegasz biel kosci. "+QIMIE(enemy,PL_MIA)+ "wije "+
      "sie w spazmach bolu.\n",enemy);                                 
      break;
    
      default:
      wielder->catch_msg("Unosisz reke z sztyletem, mierzysz i wyrzucasz sztylet "+
      "w kierunku "+QIMIE(enemy,PL_DOP)+", trafiajac go w szyje.\n"+
      "Jego krew tryska tobie prosto na twarz. "+
      QIMIE(enemy,PL_DOP)+" pada martwy na ziemie, "+
      "a ty podchodzisz wyciagasz sztylet z przeciwnika "+
      "i czyscisz go z krwi "+
      "o ubranie przeciwnika.\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA)+" unosi reke z sztyletem i "+
      "wyrzuca go w twoim kierunku, trafiajac cie w szyje.\n"+
      "Twoja krew tryska na wszystkie strony. "+
      "Padasz na ziemie martwy, a twoj przeciwnik wyciaga sztylet z ciebie "+
      "i czysci go z krwi o twoje ubranie.\n");
      tell_watcher(QCIMIE(wielder,PL_MIA)+" unosi reke z sztyletem i "+
      "wyrzuca go w kierunku "+QIMIE(enemy,PL_DOP)+", trafiajac go w szyje.\n"+
      "Krew "+QIMIE(enemy,PL_DOP)+" tryska na wszystkie strony, obryzgujac "+
      QCIMIE(wielder,PL_DOP)+". "+QIMIE(enemy,PL_MIA)+" pada martwy na ziemie, "+
      "a "+QCIMIE(wielder,PL_MIA)+" podchodzi do przeciwnika i wyciaga sztylet "+
      "i czysci go z krwi o jego ubranie.\n",enemy);
      break;
   }

   return 1;
}
