/* plik:       mag_maczuga.c
 * autor:      Aron i Kalregus
 * opis: Magiczny maczuga dla kogos z chaosu.
 */

inherit "/d/Imperium/std/weapon";

#include <wa_types.h>
#include <stdproperties.h>
#include <macros.h>
#include <formulas.h>
#include <filter_funs.h>
#include <options.h>

object wielder;

create_weapon()
{
    ustaw_nazwe(({"maczuga","maczugi","maczudze","maczuge","maczuga","maczudze"}),
        ({"maczugi","maczug","maczugom","maczugi","maczugami","maczugach"}), PL_ZENSKI_NOS_ZYW);
                   
    ustaw_nazwe(({"maczuga","maczugi","maczudze","maczuge","maczuga","maczudze"}),
        ({"maczugi","maczug","maczugom","maczugi","maczugami","maczugach"}), PL_ZENSKI_NOS_ZYW);
      
            

    dodaj_przym("ogromna","ogromni");                                                                                                            
    dodaj_przym("polyskujaca","polyskujacy");



    set_long("Z wielka luboscia patrzysz na bron, ktora udalo ci sie zdobyc."+
    "Jest wieksza od niejednego czlowieka i nie watpliwie nie ustepuje"+ 
    "wytrzymaloscia zadnemu ze znanych stopow . Trzonek wykonany jest ze"+ 
    "starej skaly dostepnej jedynie w Gorach Kranca Swiata. Wykonac go"+ 
    "musial nie lada kowal gdyz wyglada na bardzo grozna bron szczegolnie,"+ 
    "glowica ktorej kolce polyskuja zimnym blaskiem i sprawiaja wrazenie"+
    "naprawde niebezpicznych. Ksztaltem glowica ta przypomina czaszke tych"+
    "ktorym zwyciestwo nie bylo pisane. Jednak aby dobrze wladac ta"+
    "bronia trzeba byc nieleda osilkiem. \n");


    set_hit(27);
    set_pen(45);

    add_prop(OBJ_I_VOLUME, 6000);
    add_prop(OBJ_I_WEIGHT, 9000);
    add_prop(OBJ_I_VALUE, F_VALUE_WEAPON(25,39) + 2000);
    
    set_likely_dull(0);
    
//    set_dt();       rodzaj zadawanych ran!
    
    set_wt(W_CLUB);

    set_hands(W_BOTH);

    add_prop(OBJ_M_NO_BUY, 1);
    
    add_prop(OBJ_I_IS_MAGIC_WEAPON, 1);
    
    add_prop(MAGIC_AM_MAGIC, ({ 70, "enchantment"}));
    
    add_prop(MAGIC_AM_ID_INFO,({"Ogromna polyskujaca maczuga.\n",15}));

    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("Dobywajac ogromnej polyskujacej maczugi czujesz aure mocy, ktora"+
   "delikatnie przechodzi twoje cialo.Gdy tylko opuszcza cie to wrazenie"+
   "pewniej zaciskaz dlonie na rekojesci.\n);
   
   say(", gdy "+

       QCIMIE(this_player(),PL_MIA) + " dobywa jej oburacz.Dostrzegasz struzke " + 
       " krwi ciagnaca sie od glowicy do rekojesci, ktora jest jedyna pozostaloscia " + 
       " po jej ofiarach.\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("Opuszczajac ogromna polyskujaca maczuge tracisz pewnosc siebie..."+
   "..bez niej jestes zwyklym smiertelnikiem.\n");

   say(QCIMIE(this_player(),PL_MIA)+" opuszcza wspanialy mlot lucernenski, "+
       "ktory nagle przestaje drzec, zamierajac w chlodnym bezruchu.\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)
{
   object blinding;

   wielder = query_wielded();

   switch(phurt)
   {
/*  
      case -1:
      wielder->catch_msg("Prubujesz trafic " + QIMIE(enemy,PL_BIE) + " swo" + koncowka("ja ","im ") short(PL_DOP) + 
          ", lecz ta ze swistem mija cel.\n");                                                   
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " zamachuje sie na ciebe " + 

         short(PL_NAR) + ", lecz ta ze swistem mija twoje cialo.\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " wykonuje potezny zamach " +
          short(PL_NAR) +" ", lecz ta mija" + 
          QIMIE(enemy,PL_BIE)+" ze swistem.\n", enemy);
      break;
*/
      case -1:
      case 0:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);

      case 1..4:

      wielder->catch_msg(" Ledwie zahaczasz "
      + hdesc + " swo" + koncowka("im ","ja ") + short(PL_NAR) +
      + QIMIE(enemy,PL_BIE) + " nie zadajac " +  enemy->koncowka(" mu" , " jej ") + " powazniejszych ran ".\n");
      
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " ledwie zahacza cie " + 
      " w " + hdesc + short(PL_NAR) + "nie pozostawiajac powzniejszych ran".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " ledwie zahacza " +
          QIMIE(enemy,PL_BIE) + " w " + hdesc + short(PL_NAR) + "nie pozostawiajac powazniejszych ran".\n",enemy);

      break;

      case 5..9:

      wielder->catch_msg("Szybkim ruchem " + " swo" + koncowka("jego ","jej ") + short(PL_DOP) 
      "trafiasz" + QIMIE(enemy,PL_DOP) + " w " + hdesc                                                              
      + " raniac "  + (" go " , " ja ") + " lekko".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " zahacza cie " +
          + short(PL_DOP) + " w " + hdesc +"raniac cie przy tym lekko".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " zahacza " + QIMIE(enemy,PL_BIE) +
          + short(PL_DOP) + " w " + hdesc + " raniac " + enemy->koncowka(" go "," ja ") + " przy tym lekko.\n",enemy);
    
      break;
      
      case 10..19:

      wielder->catch_msg("Twoj nagly zwod zaskakuje " + QIMIE(enemy,PL_BIE) +
      ", a ty pozostawiasz na jego ciele krwawe since " + " swo" + 
      koncowka("ja ","im ") + short(PL_DOP) + ".\n");                                                           
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " zaskakuje cie nagle szybkim zwodem i pozostawia na 
      " + hdesc + " krwawe wyzlobienia udezajac " + short(PL_DOP) + ".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " zaskakuje szybkim zwodem " + QIMIE(enemy,PL_BIE) +
          " i pozostawia na " +  enemy->koncowka(" jego " , " jej ") ciele krwawe wyzlobienia po udezeniu " + short(PL_DOP) + ".\n",enemy);

      break;

      case 20..34:
      
      wielder->catch_msg("Potezne machniecie " two" + koncowka("jej ","jego ")  " +
          short(PL_DOP) + " dosiaga" + QIMIE(enemy,PL_BIE) + " ciezko
      raniac " + enemy->koncowka(" go w " , " ja w ") + hdesc + ".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " wykonuje potezny machniecie " +
          short(PL_DOP) + ", ciezko  raniac cie w " + hdesc +".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " wykonuje potezny machniecie " +
          short(PL_DOP) + ", ciezko raniac " + QIMIE(enemy,PL_BIE) +
          " w " + hdesc + ".\n",enemy);
      break;

      case 35..49:

      wielder->catch_msg("Trafiasz " + QIMIE(enemy,PL_DOP) +
          short(PL_DOP) + " w " + hdesc + " powaznie raniac " + enemy->koncowka(" go w " , " ja w ") + 
          hdesc + " Po chwili ubranie nasiaka krwia w miejscu uderzenia".\n");
      enemy->catch_msg(short(PL_MIA) + "trzymana przez " 
      + QCIMIE(wielder,PL_DOP) + " trafia cie w " + hdesc + " powaznie cie przy tym raniac." +
      " Po chwili ubranie zaczyna sie do ciebie lepic, czujesz ze to krew".\n");
      tell_watcher(shirt(PL_MIA) + " trzymana przez " QCIMIE(wielder,PL_DOP) + " trafia " +
          QIMIE(enemy,PL_DOP) + " powaznie raniac w " + hdesc + ".\n",enemy);
      break;

      case 50..75:

      wielder->catch_msg("Twe spotegowane o rozped " + short(PL_DOP) + " uderzenie trafia bezposrednio " 
         + QIMIE(enemy,PL_DOP) + " w " + hdesc + " bardzo ciezko 
         raniac. + hdesc + " zostaje zabarwion" + koncowka("y " , "a ") + " na karminowy kolor 
         przez sciekajace strumienie krwi ".\n");
      enemy->catch_msg(QIMIE(wielder,PL_MIA) + " zamachujac sie szeroko " + " swo" + koncowka("ja ","im") + short(PL_NAR) + 
         " dosiaga twojego ciala bardzo ciezko cie raniac." + " Twoja
         krew scieka obfitym potokiem po " + hdesc + " + " Z wysilkiem rzuszasz do walki.\n");
      tell_watcher("Bardzo silne uderzenie " + short(PL_DOP) +
          QCIMIE(wielder,PL_DOP) + 
          " dosiega ciala " + QIMIE(enemy,PL_DOP) + " bardzo ciezko 
          raniac " enemy->koncowka("go" , "ja") + " w " + hdesc + 
          + hdesc + " zostaje zabarwion" + enemy->koncowka(" a " , " y " , " e ")
           + " na karminowy kolor przez sciekajace strumienie krwi.\n",enemy);
      break;

      case 76..99:

      wielder->catch_msg("Nagle uderzasz " + QIMIE(enemy,PL_BIE) + 
           " w " + hdesc + "  " + short(PL_NAR) + " lamiac kosci " 
           + " Widzisz trzesace sie nogi i nieprzytomne spojrzenie. Czujesz, ze jeszcze jeden taki cios i nie bedzie z kim 
           walczyc....\n");
      enemy->catch_msg("Wykonujesz unik ostatnimi resztkami sil lecz " + short(PL_MIA) + 
            " trzymana przez " + QIMIE(wielder,PL_DOP) + " trafia cie " +
            " w " + hdesc + " lamiac przy tym kosci. Powoli przestajesz rozumiec co sie dzieje, a wszystkie dotychczasowe wydarzenia staja sie jedynie mglistym wspomnieniem.\n");
      tell_watcher(QIMIE(wielder,PL_MIA) + " nagle uderza z potworna sila na " + 
          QIMIE(enemy,PL_BIE) + " " + short(PL_NAR) + ". Czujesz jakby obok ciebie przeszla wlasnie smierc.\n",enemy);
                                                                                                                                                                                                
      break;

   }

   return 1;
}
