inherit "/d/Imperium/std/weapon";
object wielder;
#include <wa_types.h>
#include <stdproperties.h>
#include <macros.h>
#include <formulas.h>
#include <filter_funs.h>
#include <options.h>
int which_hit;
int spec_delay;
int enemy_align;
int wielder_align;
int dam_ench_ratio;
#define TP              this_player()
#define TO              this_object()
void
create_weapon()
{
    dodaj_nazwy( ({ "mlot", "mlota", "mlotowi", "mlot", "mlotem",
                   "mlocie" }), ({ "mloty", "mlotow", "mlotom",
                   "mloty", "mlotami", "mlotach" }), PL_MESKI_NOS_NZYW );
    dodaj_przym("jasnoniebieski","jasnoniebiescy");
    dodaj_przym("olbrzymi","olbrzymi");
    ustaw_nazwe( ({ "mlot bojowy", "mlota bojowego", "mlotowi bojowemu ",
                    "mlot bojowy", "mlotem bojowym", "mlocie bojowym"}),
                  ({"mloty bojowe", "mlotow bojowych", "mlotom bojowym",
                    "mloty bojowe", "mlotami bojowymi", "mlotach bojowych"}),PL_MESKI_NOS_NZYW);
    set_long("Swietosc tej poterznej broni roztacza sie aura wokol " +
             "ciebie. Swietliste linie czystej energii przebiegaja " +
             "we wszystkie strony. Trzon zrobiony z jakiejs magicznej " +
             "substancji nie wyglada jak nic co do tej pory widziales. " +
             "Glowica nie zostala wykonana przez zadnego kowala. " +
             "Wyglada jak wykonana z krysztalu, ale nie jest to normalne, " +
             "znane na tym swiecie tworzywo. Wydaje sie pulsowac i " +
             "zmieniac nieustannie, jakby byla plynna. Boisz sie nawet " +
             "jej dotknac.\n");
    add_item("aure","Biala, swietlista aura otacza ten wspanialy mlot.\n");
    add_item("linie","Linie czystej, nieskalanej energii przeplywaja " +
             "przez cala bron. Wygladaja jak uwolnione przez jakas " +
             "ogromna sile blysawice.\n");
    add_item("trzon","Wykonany z nie znanego ci materialu, jest lekki " +
             "jak piorko.\n");
    add_item("glowice","Jedna z najdziwniejszych rzeczy jakie " +
             "kiedykolwiek udalo ci sie zobaczyc. Nie jest wykonana " +
             "z rzadnej materialnej substancji, bardziej przypomina to " +
             "czysta energie, ktora pulsuje i skwierczy z ogromna sila.\n");
    set_likely_dull(0);
    add_prop(OBJ_M_NO_BUY, 1);
    
    add_prop(OBJ_I_IS_MAGIC_WEAPON, 1);
    
    which_hit = 0;
    
    add_prop(MAGIC_AM_MAGIC, ({ 100, "enchantment"}));
    set_hit(60);
    set_pen(60);
    set_wt(W_WARHAMMER);
    set_dt(W_BLUDGEON);
    set_hands(W_ANYH);
    add_prop(OBJ_I_WEIGHT, 1500);
    add_prop(OBJ_I_VOLUME, 6000);
    add_prop(OBJ_I_VALUE, 10000);
}
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");
   }
}    
mixed
wield(object what)
{  
   set_alarm(0.1,0.0,"add_wielder");
   write("Jasniejaca aura rozlewa sie po twojej skorze. Czujesz " +
         "cieplo, ktore nagle otacza cie calego. W twych myslach " +
         "powoli kreuje sie dziwny obraz. Gigantyczny poteznie " +
         "zbudowany mezczyzna z majestatycznie zwisajaca broda i " +
         "rozwianymi, falujacymi na wietrze wlosami, zakuty w " +
         "mithrilowa zbroje plytowa odwraca glowe do ciebie i odzywa " +
         "sie donosnym lecz cieplym glosem: Teraz ty jestes w " +
         "posiadaniu mego najswietszego artefaktu, w rekach " +
         "dzierzacego ten oto mlot, w nim spoczywa moc Sigmara. " +
         "Idz i glos me imie...Po chwili wizja znika a ty z nowa " +
         "moca jestes gotow. Gotow na wszystko.\n");
   say(QCIMIE(this_player(),PL_MIA)+" dobywa swietlistego mlota i aura " +
         "swietosci otacza go.\n");
   TP->set_combat_speed(TP->query_comabt_speed()+40);
   TP->set_stat_extra(SS_STR, TP->query_stat_extra(SS_STR) + 20);
   TP->set_stat_extra(SS_DEX, TP->query_stat_extra(SS_DEX) + 20);
   TP->set_stat_extra(SS_CON, TP->query_stat_extra(SS_CON) + 20);
   TP->set_stat_extra(SS_INT, TP->query_stat_extra(SS_INT) + 20);
   TP->set_stat_extra(SS_WIS, TP->query_stat_extra(SS_WIS) + 20);
   TP->set_stat_extra(SS_DIS, TP->query_stat_extra(SS_DIS) + 20);
   TP->set_skill_extra(5, 30);
   TP->set_skill_extra(24, 30);
   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 swa bron. Cala potega, ktora ci zapewniala " +
         "znika. Nie jestes juz wyslannikiem Sigmara.\n");
   say(QCIMIE(this_player(),PL_MIA)+" opuszcza mlot i swietlista " +
         "aura, ktora go otaczala znika.\n");
   TP->set_combat_speed(TP->query_combat_speed()-40);
   TP->set_skill_extra(5, 0);
   TP->set_skill_extra(24, 0);
   return 1;
}
int did_hit(int aid, string hdesc, int phurt, object enemy, int phit, int dam)
{
  string how;
  object wielder=query_wielded();
  ::did_hit(aid, hdesc, phurt, enemy, phit, dam);
     
  switch (phurt)
  {
    case 1..10:
       how = "niewielkie";
       break;
    case 11..30:
       how = "znaczne";
       break;
    case 31..60:
       how = "powazne";
       break;
    case 61..100:
       how = "ogromne";
       break;
    default:
       how = "nieznaczne";
  }
  spec_delay = 400/(wielder->query_skill(SS_WEP_WARHAMMER));  
  if (which_hit == spec_delay)
  {
    which_hit = 0;
    enemy_align=enemy->query_alignment();
    wielder_align=wielder->query_alignment();
    dam_ench_ratio=1+((wielder_align-enemy_align)/100);
    if(enemy_align <= wielder_align)
    {
      enemy->heal_hp(-(dam*dam_ench_ratio));   
      if (enemy->query_hp() > 1)
      {
         wielder->catch_msg("\n" + capitalize(short(PL_MIA)) + " zaczyna nagle " +
           "pulsowac bladym blekitnym swiatlem.\nCzujesz, przy sobie obecnosc " +
           "Sigmara. Twoja reka, kierowana jego moca wykonuje szeroki zamach " +
           "i z ogromna sila godzisz w "+QIMIE(enemy, PL_BIE) + " zadajac " + how + " obrazenia.\n\n");
         enemy->catch_msg("\n" + capitalize(short(PL_MIA)) + " "
           + QCIMIE(wielder, PL_DOP) + " zaczyna nagle pulsowac bladym blekitnym " +
           "swiatlem.\n" + QCIMIE(wielder, PL_MIA) + " wykonuje szeroki zamach i " +
           "z ogromna sila godzi w ciebie i zadajac "+ how + " obrazenia.\n\n");
        
         tell_watcher("\n" + capitalize(short(PL_MIA)) + " " + QCIMIE(wielder, PL_DOP) +
           " zaczyna nagle pulsowac bladym blekitnym swiatlem.\n" +
           QCIMIE(wielder, PL_MIA) + " wykonuje szeroki zamach i z ogromna sila " +
           "godzi w " + QIMIE(enemy, PL_BIE)+" zadajac "+ how + " obrazenia.\n\n",
           enemy);
      }
      else
      {
         wielder->catch_msg("\nCzujesz, ze " + short(PL_MIA) + " przejmuje "+
           "kontrole nad toba.\n" + "Bezwiednie unosisz "+ short(PL_MIA) +
           " nad glowe i wykonujesz potezny cios miezdzacy cialo " +
           QIMIE(enemy, PL_DOP) + " na drgajaca papke. Krew tryska na wszystkie " +
           "strony.\nWybuchasz niekontrolowanym mrozacym krew w zylach smiechem." +
           "\nPo chwili odzyskujesz panowanie nad soba.\n\n");
         enemy->catch_msg("\n" + QCIMIE(wielder, PL_MIA) + " unosi swoj " +
           short(PL_MIA) + " nad glowe i wykonuje potezne uderzenie. Gdy " +
           "glowica mlota miazdzy twe cialo przeszywa cie nieludzki bol i potworne " +
           "zimno bijace od " + short(PL_DOP) + "Czujesz jak ucieka z ciebie " +
           "zycie, gdy twoje cialo rozpada sie na setki czesci.\n\n");
         tell_watcher("\n" + QCIMIE(wielder, PL_MIA) + " unosi swoj " +
            short(PL_MIA) + " nad glowe i wykonuje potezne cios miazdzac " +
            "cialo " + QIMIE(enemy, PL_DOP) + "! Krew tryska na " +
            "wszystkie strony.\n" + QIMIE(wielder, PL_MIA) + "wybucha mrozacym " +
            "krew w zylach smiechem.\nPo chwili opanowuje sie i wraca do " +
            "siebie.\n\n", enemy);
         enemy->heal_hp(enemy->query_hp(-2));
         enemy->do_die(wielder);
       }
       return 1;
    }
  }
  else
  which_hit = which_hit + 1; 
  return 0;
}
