/* plik:       maczm.c
 * data:       05.05.1999 - do hmm nie wiem kiedy skoncze ;)
 * autor:      Quad
 * opis:       Maczuga dla giganta.
 */

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>

#define LIVE_I_NO_FLESH	"_live_i_no_flesh"

object wielder;

create_weapon()
{
    ustaw_nazwe( ({ "kolczasta maczuga", "kolczastej maczugi", "kolczastej maczudze ",
      "kolczasta maczuge", "kolczasta maczuga", "kolczastej maczudze"}),
      ({"kolczaste maczugi", "kolczastych maczug", "kolczastym maczugom",
      "kolczaste maczugi", "kolczastymi maczugami", "kolczastych maczugach"}),
      PL_ZENSKI );

    dodaj_nazwy( ({ "maczuga","maczugi","maczudze","maczuge","maczuga","maczudze"}),
      ({"maczugi","maczug","maczugom","maczugi","maczugami","maczugach"}),PL_ZENSKI);

    dodaj_przym("wielki","wielcy");

    set_long("@@dlugi"); 

    add_item(({"kolec","kolce"}),"@@kolce");

    set_hit(27);
    set_pen(39);

    add_prop(OBJ_I_VOLUME,  6000);
    add_prop(OBJ_I_WEIGHT, 9000);
    add_prop(OBJ_I_VALUE, F_VALUE_WEAPON(21,37) + 2222);
    
    set_dt(W_BLUDGEON);
    
    set_wt(W_CLUB);

    set_hands(W_BOTH);

    add_prop(OBJ_M_NO_BUY, 1);
    

    set_wf(this_object());

    set_alarm(0.5,0.0,"add_wielder");

}

string
dlugi()
{   
    string str;
    str = "Pokaznych rozmiarow maczuga, skladajaca sie z drewnianej rekojesci "+
    "i wienczacej ja stalowej bryly, naszpikowanej kolcami. "+
    "Trzon wykonany z debowego drewna i opleciony skorzanym rzemieniem "+
    "jest zarowno wygodny w uchwycie, jak tez stanowi "+
    "solidna podstawe mocowania zelaznej bryly, mieszczacej sie na jego koncu. "+
    "Twor ow przypomina rozmiarami i ksztaltem czaszke ludzka, a odwzorowany "+
    "uklad zuchwy sugeruje niemale cierpienie. Czaszka jezy sie lasem waskich "+
    "i ostrych kolcow, zadnych swiezego miesa. Miedzy kolcami wygrawerowane sa "+
    "starozytne runy, wypelnione zlotem, polyskujace tajemniczo miedzy groznymi "+
    "dodatkami na czaszce. Swiadcza one niezbicie o kunszcie kowala, ktory bron "+
    "te wykonal. Z racji swej wagi, maczuga jest idealna bronia dla wojownikow "+
    "posiadajacych duza sile ramion. Zwinni przeciwnicy moga przed nia zrecznie "+
    "umykac, jednakze sila obrazen spowodowanych celnym uderzeniem maczuga "+
    "wynagradza w pelni ewentualne chybione ciosy. \n";
    return str;

}

string
kolce()
{

    string str;
    str = "Kolce pokrywaja prawie prawie cala powierzchnie ciezkiej, czaszkowatej "+
    "bryly, jaka zakonczona jest maczuga. Rozmieszczone sa rownomiernie. "+
    "Kazdy szpikulec jest lsniacy, chyba, ze pokrywaja go plamy zakrzeplej krwi. "+
    "Kolce maja dlugosc okolo czterech cali, sa gladkie i niewiarygodnie ostre. "+
    "Dobite sila ramienia i masa stalowej czaszki, z latwoscia przenikaja "+
    "slabsze zbroje, wrzynajac sie w cialo przeciwnika. \n";
    return str;
}

mixed
wield(object what)
{
   if(this_player()->query_stat(0) < 55)
     {
         say(QCIMIE(this_player(),PL_MIA) + " proboje dobyc " +
           short(PL_DOP) + ", ale opuszcza nagle, z wyrazem strasznego wysilku na twarzy .\n");
         return"Probojesz dobyc "+short(PL_DOP) + ", lecz sily nagle cie opuszczaja, "+
           "czujesz straszliwy bol w ramionach.\n";
     }        
   set_alarm(0.1,0.0,"add_wielder");
   write("Dobywasz zawziecie, "+short(PL_DOP)+ ", w swe rece.\n");
   say(QCIMIE(this_player(),PL_MIA) + " dobywa zawziecie "+short(PL_DOP)+", w swe rece.\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 z ulga swoja " + short(PL_MIA)+".\n"); 
   say(QCIMIE(this_player(),PL_MIA)+" opuszcza z ulga swoja "+short(PL_BIE)+".\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();

   if(enemy->query_prop(LIVE_I_NO_FLESH))
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);

   switch(phurt)
   {
      case -1:
      case 0:
      return ::did_hit(aid,hdesc,phurt,enemy,dt,phit,dam,tohit,def_ob,armour);

      case 1..4:
      wielder->catch_msg("Lekko drasnales " + QIMIE(enemy,PL_BIE) + " w " 
         + hdesc +
          " swo" + koncowka("im ","ja ") + short(PL_NAR) + ".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " lekko drasnal cie w "
          + hdesc +
          " swo" + koncowka("im ","ja ") + short(PL_NAR) + ".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " drasnal " +
          QIMIE(enemy,PL_BIE) + " w " + hdesc + 
          " swo" + koncowka("im ","ja ") + short(PL_NAR) + ".\n",enemy);
      break;

      case 5..9:

      wielder->catch_msg("Ranisz lekko " + QIMIE(enemy,PL_BIE) + " w " + hdesc+
          " mocnym udezeniem " +
          "swo" + koncowka("jego ","jej ") + short(PL_DOP) + ".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " Rani cie lekko mocnym uderzeniem swojej " + short(PL_DOP) + ".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " rani lekko " + QIMIE(enemy,PL_BIE) +
          " w " + hdesc + " mocnym uderzeniem " + short(PL_DOP) + ".\n",enemy);
      break;
      
      case 10..19:

      wielder->catch_msg("Po duzym zamachu, skutecznym uderzeniem swojej " + short(PL_DOP) + " kaleczysz znacznie " + QIMIE(enemy,PL_BIE) +
          " w " + hdesc + ".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " po duzym zamachu skutecznie uderza cie swoja "+ short(PL_DOP) 
      + " kaleczac znacznie cie w " + hdesc + ".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " po duzym zamachu kaleczy znacznie " + QIMIE(enemy,PL_BIE) + " skutecznym uderzeniem swojej "+ short(PL_DOP) + ".\n",enemy);
      break;

      case 20..34:
      
      wielder->catch_msg("Mocnym uderzeniem " +
          short(PL_DOP) + " ranisz " + QIMIE(enemy,PL_BIE) +
          " trafiajac w " + hdesc + ".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " mocnym uderzeniem " +
          short(PL_DOP) + " rani cie w trafiajac " + hdesc +".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " mocnym udzerzeniem " +
          short(PL_DOP) + " rani " + QIMIE(enemy,PL_BIE) +
          " trafiajac w " + hdesc + ".\n",enemy);
      break;

      case 35..49:

      wielder->catch_msg("Ranisz " + QIMIE(enemy,PL_DOP) +  
          " miazdzacym ciosem "+ short(PL_DOP) +" trafiajac w " + hdesc + ".\n");
      enemy->catch_msg(QCIMIE(wielder,PL_MIA) + " rani cie miazdzacym ciosem "+
          short(PL_NAR) + " trafiajac cie w " + hdesc + ".\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " rani " + QIMIE(enemy,PL_DOP) + 
      " miazdzacym ciosem " + short(PL_DOP) +
          "trafiajac " + enemy->koncowka("go","ja") + " w " + hdesc + " .\n",enemy);
      break;

      case 50..75:

      wielder->catch_msg("Potezne udezenie two" + koncowka("go","jej") +
          " " + short(PL_DOP) +
          " trafia w " + hdesc + " " + QIMIE(enemy,PL_DOP) + ", zostawiajac powazna rane .\n");
      enemy->catch_msg("Potezne udezenie " + short(PL_DOP) + " " +
          QIMIE(wielder,PL_DOP) + 
          " dosiega cie, zadajac ci powazna rane!\n");
      tell_watcher("Potezne uderzenie " + short(PL_DOP) + " " +
          QCIMIE(wielder,PL_DOP) + 
          " dosiega " + QIMIE(enemy,PL_DOP) +
          " zostawiajac " +
          enemy->koncowka("mu","jej") + " powazna rane.\n",enemy);
      break;

      case 76..99:

      wielder->catch_msg("Olbrzymim ciosem masakrujesz " + QIMIE(enemy,PL_BIE) + 
           " " + short(PL_NAR) + ", uderzajac " + enemy->koncowka("go","ja") +
           " w " + hdesc + ".\n",enemy); 
       
      enemy->catch_msg(QIMIE(wielder,PL_MIA) + " masakruje cie olbrzymim ciosem " +
           short(PL_DOP) + /**/
           ".\n"); 
      tell_watcher(QCIMIE(wielder,PL_MIA) + " masakruje " + 
          QIMIE(enemy,PL_BIE) + " olbrzymim ciosem swojej " +
          short(PL_DOP) + ".\n",enemy); /**/ 
      break;

      default:
      wielder->catch_msg("Gigantycznym uderzeniem " + short(PL_DOP) + " trafiasz " +
         QIMIE(enemy,PL_BIE) + " w klatke piersiowa, bezwladne cialo twoje" +
         enemy->koncowka("go","j") + " przeciwni" + enemy->koncowka("ka","czki") +
         " odlatuje w tyl po czym opada na podloze. Na wszystkie strony bryzgaja strugi krwi "+
	 "i leca strzepy ciala wyrwane kolcami... \n");
      enemy->catch_msg("Gigantyczny cios " + QIMIE(wielder,PL_DOP) +
         " trafia cie prosto klatke piersiowa. Czujesz ze zacznasz sie dusic, potworny bol, odrzut do tylu. Nic juz nie czujesz...\n");
      tell_watcher(QCIMIE(wielder,PL_MIA) + " gigantycznym uderzeniem " + short(PL_DOP) +

         " trafia " + QIMIE(enemy,PL_DOP) +" w klatke piersiowa, bezwladne cialo " + 
         QIMIE(enemy,PL_DOP) + 
         " odlatuje w tyl po czym opada na podloze. Na wszystkie strony bryzgaja strugi krwi "+
	 "i leca strzepy ciala wyrwane kolcami... \n",enemy);
      break;

   }

   return 1;
}




