
inherit "/d/Imperium/std/monster.c";
#include "../def.h"

#include <stdproperties.h>
#include <ss_types.h>
#include <macros.h>
#include <wa_types.h>
#include <filter_funs.h>

#define BRON          ({ ({(PATH + "sztylet.c")}), \
                         ({(PATH + "szabla.c")}), \
                         ({(PATH + "szabla2.c")})  })
                         
#define PANCERZ       ({ ({(PATH + "koszulka_kolcza.c")}), \
                         ({(PATH + "napiersnik.c")}), \
                         ({(PATH + "kolczuga.c")})  })
                         

#define PRZYMIOTNIKI1 ({ ({"brutalny", "brutalni"}),          \
                         ({"odrazajacy", "odrazajacy"}),      \
                         ({"okrutny", "okrutni"}),            \
                         ({"grozny", "grozni"}),              \
                         ({"zlosliwy", "zlosliwi"}),          \
                         ({"smierdzacy", "smierdzacy"}),      \
                         ({"niebezpieczny", "niebezpieczni"}) })

#define PRZYMIOTNIKI2 ({ ({"zielony", "zieloni"}),            \
                         ({"ciemnoskory", "ciemnoskorzy"}),   \
                         ({"silny", "silni"}),                \
                         ({"maly", "mali"}),                  \
                         ({"duzy", "duzi"}),                  \
                         ({"zwinny", "zwinni"}),              \
                         ({"ciemnooki","ciemnoocy"})          })

create_monster()
{
    int i = random(7), j = random(7); 

    set_long("Masz przed soba typowego przestawiciela rasy orkow. Jest " +
             "brudny, smierdzacy i ma insekty. Mimo slamazarnego wygladu " +
             "jest groznym przeciwnikiem. Nie jeden smialek zakonczyl " +
             "swoj zywot na ostrzu jego broni.\n");

    dodaj_przym(PRZYMIOTNIKI2[i][0], PRZYMIOTNIKI2[i][1]);
    dodaj_przym(PRZYMIOTNIKI1[j][0], PRZYMIOTNIKI1[j][1]);
                 
    ustaw_odmiane_rasy(PL_ORK);          
    set_gender(G_MALE);
      
    add_prop(LIVE_I_NEVERKNOWN, 1);
    add_prop(IMPERIUM_I_STWOR_CHAOSU, 1);

    set_stats(({160 + random(40) , 120 + random(80), 180 + random(70),
                 40              ,  40             , 160              }));

    set_skill(SS_DEFENCE,      55 + random(45));
    set_skill(SS_PARRY,        55 + random(45));
    set_skill(SS_WEP_SWORD,    55 + random(45));
        
    set_combat_speed(25);
    set_exp_factor(200);        
    
    set_chat_time(45+random(10));
    set_act_time(40+random(10));
    
    add_act("emote podejrzliwie sie rozglada.");
    add_act("emote leniwie sie przeciaga.");
    add_act("emote podspiewuje sobie frywolna piosenke o elfkach.");
    add_act("emote pluje na ziemie.");
    
    add_act("emote mowi: Durna sluzba... A mama mowila: Wstap do Armii, poznasz swiat.");
    add_act("emote mowi: Co tu robisz, robaku!");
    
    add_cchat("Zabije cie jak psa!");
    add_cchat("Splune ci w oko!");
    add_cchat("ZABIJE CIE!!");
    
    set_random_move(25);
    set_alignment(-350);

    i = random(3); add_armour(PANCERZ[i]);
    i = random(3); add_weapon(BRON[i]);
}

public void
wesprzyj(object ob)
{
    if (query_attack())
    {
        return ;
    }
    
    command("wesprzyj " + OB_NAME(ob));
    
    if (query_attack())
    {
        switch(random(5))
        {
            case 0: command("krzyknij Do boju!"); break;
            case 1: command("krzyknij Waaaaaagh!"); break;
            case 3: command("krzyknij Krwiiiii!"); break;
            case 4: command("krzyknij Smierci!!"); break;
        }
        return ;
    }

    switch(random(5))
    {
        case 0: command("powiedz do "+OB_NAME(ob)+" O Mamo !!!"); break;
        case 1: command("powiedz do "+OB_NAME(ob)+" Sam se radz."); break;
        case 2: command("powiedz do "+OB_NAME(ob)+" Chyba zartujesz ?!"); break;
        case 3: command("powiedz do "+OB_NAME(ob)+" He, he. Ja Ci nie pomoge...");
        				break;
        case 4: command("powiedz Ratunku!");
    }
}

public void
pomocy()
{
    (all_inventory(environment(this_object())) - ({ this_object() }))->wesprzyj(this_object());
}

void
attacked_by(object wrog)
{
    command("krzyknij Pomocy !!");
    set_alarm(0.1, 0.0, "pomocy");
    return ::attacked_by(wrog);
}

public int
special_attack(object kto)
{
    mixed hit_res;
    int pen, hit;

    if (random(100) > 50)
    {
        pen = (600 + random(2)*200);
        hit = 40 + random(20)
	    
        hit_res = kto-> hit_me(ftoi(pen), W_SLASH, hit, this_object(), -1);
        switch (hit_res[0])
        {
            case 0..5: 
                kto->catch_msg(QCIMIE(this_object(), PL_MIA) + " naglym " +
                "ruchem skreca sie i wyprowadza potezny cios z polobrotu, " +
                "ale ty szybko uskakujesz.\n");
        	    
		        say(QCIMIE(this_object(), PL_MIA) + " naglym ruchem skreca sie " +
		        "i wyprowadza potezny ciosz polobrotu, ale " + QIMIE(kto, PL_MIA) + 
		        " szybko uskakuje.\n", kto);
                break;
                
	        case 6..25:
		         kto-> catch_msg(QCIMIE(this_object(), PL_MIA) + " gwaltownie " +
		         "obraca sie, a jego potezny cios trafia cie w " + hit_res[1] +
		         " nie wyrzadzajac jednak wiekszej szkody.\n");
		         
		         say(QCIMIE(this_object(), PL_MIA) + " gwaltownie obraca sie, a " +
		         "jego potezny cios trafia " + QIMIE(kto, PL_DOP) + " w " +
		         hit_res[1] + " nie wyrzadzajac jednak wiekszej szkody.\n", kto);
		         break;
		         
            case 26..50:
		         kto-> catch_msg(QCIMIE(this_object(), PL_MIA) +
		         " niewiarygodnie szybkim ruchem obraca sie i tnie cie " +
		         "silnie w " + hit_res[1] + ".\n");
    		     say(QCIMIE(this_object(), PL_MIA) + " niewiarygodnie szybkim " +
		         "ruchem obraca sie i tnie silnie " + QIMIE(kto, PL_DOP) +
		         " w " + hit_res[1] + ".\n", kto);
                break;
                
	        case 51..75:
		         kto-> catch_msg(QCIMIE(this_object(), PL_MIA) + " zwija sie " +
		         "nagle w polobrocie i ciezko rani cie w " + hit_res[1] +
		         " swym poteznym ciosem.\n");
		         say(QCIMIE(this_object(), PL_MIA) + " zwija sie nagle w " +
		         "polobrocie i ciezko rani " + QIMIE(kto, PL_DOP) + " w " +
		         + hit_res[1] + " swym poteznym ciosem.\n", kto);
                break;
	    
            default:
		         kto-> catch_msg(QCIMIE(this_object(), PL_MIA) + " zwija sie " +
		         "niespodziewanie w polobrocie, a jego potezny cios z " +
		         "przerazliwym swistem masakruje cie trafiajac w " + hit_res[1] +
		         ".\n");
        	     say(QCIMIE(this_object(), PL_MIA) + " zwija sie " +
		         "niespodziewanie w polobrocie, a jego potezny cios z " +
		         "przerazliwym swistem masakruje " + hit_res[1] + " " +
		         QIMIE(kto, PL_DOP) + ".\n", kto);
        }
    }
    return 0;
} 