#include <stdproperties.h>
#include <ss_types.h>
#include <wa_types.h>
#include <macros.h>
#include <tasks.h>

#include "morley.h"

inherit "/d/Imperium/std/chaos.c";

void
dodaj_nazwy_m(string *a, string *b, int c, int d);

int q_att();

void
create_chaos()
{
    ustaw_odmiane_rasy(({"rycerz chaosu", "rycerza chaosu", "rycerzowi chaosu",
		      "rycerza chaosu", "rycerzem chaosu", "rycerzu chaosu"}),
		({"rycerze chaosu", "rycerzy chaosu", "rycerzom chaosu",
		      "rycerzy chaosu", "rycerzem chaosu", "rycerzach chaosu"}),
		PL_MESKI_OS);

    ustaw_imie(({"bornhardt", "bornhardta", "bornhardtowi",
		     "bornhardta", "bornhardtem", "bornhardcie"}));
    
    dodaj_nazwy(({"rycerz", "rycerza", "rycerzowi", "rycerza", "rycerzem", "rycerzu"}),
		({"rycerze", "rycerzy", "rycerzom", "rycerzy", "rycerzami", "rycerzach"}),
		PL_MESKI_OS);

    dodaj_nazwy_m(PL_CZLOWIEK);
    dodaj_nazwy(PL_MEZCZYZNA);

    set_long("Ow ogromny osobnik z budowy przypomina raczej czlowieka, jesli nie liczyc dwoch " +
	     "budzacych groze rogow, wyrastajacych mu spod helmu. Jest jednak bardzo wysoki i " +
	     "poteznie zbudowany, jego rozmiar dodatkowo powieksza wspaniala plytowa zbroja, " +
	     "pokrywajaca szczelnie cale jego cialo. W rekach zas dzierzy pewnie, wysmienicie " +
	     "pasujacy do niego wielgachny, obosieczny topor z czarnej stali.\n");
    
    dodaj_przym("posepny", "posepni");
    dodaj_przym("okrutny", "okrutni");
    
    set_gender(G_MALE);

    set_stats(({160, 110, 150, 50, 50, 150}));

    set_exp_factor(150);

    set_skill(SS_DEFENCE, 65);
    set_skill(SS_WEP_AXE, 75);
    set_skill(SS_PARRY, 65);
    set_skill(SS_UNARM_COMBAT, 55);
    set_skill(SS_AWARENESS, 80);
    set_skill(SS_BLIND_COMBAT, 90);

    add_prop(OBJ_S_WIZINFO, "by Morley '98-'99\n");
    add_prop(NPC_M_NO_ACCEPT_GIVE, " nie zdradza zadnego zainteresowania tym, co mu oferujesz.\n");
    add_prop(CONT_I_HEIGHT, 210);
    add_prop(CONT_I_VOLUME, 150000);
    add_prop(CONT_I_WEIGHT, 130000);
    add_prop(NPC_I_NO_FEAR, 1);
    add_prop(NPC_I_NO_RUN_AWAY, 1);
    add_prop(LIVE_I_SEE_DARK, 4);

    add_weapon(WEP_PATH + "r_topor.c");
    add_armour(ARM_PATH + "rekawR.c");
    add_armour(ARM_PATH + "helmR.c");
    add_armour(ARM_PATH + "nagolenR.c");
    add_armour(ARM_PATH + "napiersR.c");
    add_armour(ARM_PATH + "lnaramR.c");
    add_armour(ARM_PATH + "pnaramR.c");
    add_armour(ARM_PATH + "butyR.c");
    
    set_act_time(20 + random(10));
    set_cact_time(3);

    add_act("emote poleruje szmatka swoja czarna zbroje.");
    add_act("emote rozglada sie uwaznie dookola.");
    add_act("emote smieje sie do rozpuku nie wiadomo z czego.");
    add_act("emote z miloscia spoglada na swoj ogromny topor.");

    add_cact("usmiech spokojnie");
    add_cact("emote smieje sie donosnie.");
    add_cact(({"'I po co ci to bylo? No po co?", "zarechocz szyderczo"}));
    add_cact(({"'Nie boj sie... Slaanesh bedzie dla ciebie laskawy...", "emote wybucha " +
		   "szalenczym smiechem."}) );
    add_cact("emote patrzy na ciebie z politowaniem.");
    add_cact("'To byl twoj ostatni blad.");
    add_cact("'Zarabie cie jak psa!");
    add_cact("warknij potepienczo");
    add_cact("'Taaaak. Tylko takiego gnojka jak ty nam tutaj brakowalo.");
    add_cact("'Ze mna zaczynasz? Z Wielkim Bornhardtem?!? Ha, ha, ha. Wiec skosztuj tego.");
    add_cact("'Nie sadzilem, ze ktos jest na tyle glupi zeby ze mna zadzierac.");
    add_cact(({"'Czy tobie idioto wydaje sie, ze mozesz mnie pokonac?",
		   "emote krzywi wargi w pogardzie."}) );
    add_cact("emote groznie potrzasa rogami.");
    add_cact("'Zabijanie takich durni jak ty to to, co wychodzi mi najlepiej.");
    add_cact("'Ehhh... Z utesknieniem czekam na jakiegos idiote z Zakonu Sigmara.");

    set_aggressive(q_att);
    set_random_move(30, 0);

    remove_prop(LIVE_I_NEVERKNOWN);
}

dodaj_nazwy_m(string *a, string *b, int c, int d)
{
    dodaj_nazwy(a, b, c);
}

int
special_attack(object victim)
{
    int p_hurt;
    mixed hit_res;
    object paraliz;

    if (victim->query_ghost())
	return 0;

    if (random(7))
	return 0;

    if (random(3) || victim->query_prop(LIVE_I_STUNNED))
    {
	if (victim->resolve_task(TASK_DIFFICULT, SS_DEFENCE) > 0)
	{
	    victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			      "glowa i wykonuje niezbyt udana probe nabicia cie na dlugie, " +
			      "ostro zakonczone rogi wyrastajace mu spod czarnego jak noc " +
			      "helmu.\n");
	    tell_watcher(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			 "glowa i wykonuje niezbyt udana probe nabicia " +
			 QIMIE(victim, PL_DOP) + " na dlugie, ostro zakonczone rogi " +
			 "wyrastajace mu spod czarnego jak noc helmu.\n", victim);
	}
	
	hit_res = victim->hit_me(550, W_IMPALE, 10, this_object(), -1, A_BODY);
	p_hurt = hit_res[0];

	if (!victim->query_hp())
	{
	    victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			      "glowa i z przerazliwa sila wbija w twoje cialo dlugie, " +
			      "ostro zakonczone rogi wyrastajace mu spod czanego, " +
			      "posepnego helmu. Z niezwyklym spokojem stwierdzasz, ze " +
			      "z twoich plecow wystaje teraz piekne, choc ociekajace " +
			      "gesta krwia poroze. Po czym przed oczami zapada ci " +
			      "ciemnosc...\n");

	    tell_watcher(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			 "glowa i z przerazliwa sila wbija w cialo " + QIMIE(victim, PL_DOP) +
			 "dlugie, ostro zakonczone rogi wyrastajace mu spod czanego, " +
			 "posepnego helmu. Z obrzydzeniem zauwazasz, ze poroze " +
			 "przeszlo na wylot i wystaje " + QIMIE(victim, PL_CEL) + " z " +
			 "plecow, ociekajac gesta ciemno czerwona krwia.\n", victim);
	    victim->do_die(this_object());

	    return 1;
	}

	switch(p_hurt)
	{
	case 0..20:
	    victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			      "glowa i z przerazliwa sila probuje wbic w twoje cialo " +
			      "dlugie, ostro zakonczone rogi wyrastajace mu spod czanego " +
			      "helmu. Na twoje szczescie jednak rycerz zle wymierzyl " +
			      "odleglosc i poroze prawie mija sie z celem, pozostawiajac " +
			      "na twojej piersi zaledwie pare glebszych zadrapan.\n");

	    tell_watcher(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			 "glowa i z przerazliwa sila probuje wbic w cialo " +
			 QIMIE(victim, PL_DOP) + " dlugie, ostro zakonczone rogi " +
			 "wyrastajace mu spod czanego helmu. Na szczescie jednak " +
			 "rycerz zle wymierzyl odleglosc i poroze prawie mija sie z " +
			 "celem, pozostawiajac na piersi " + QIMIE(victim, PL_DOP) + 
			 " zaledwie pare glebszych zadrapan.\n", victim);
	    break;

	case 21..60:
	    victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			      "glowa i z przerazliwa sila probuje wbic w twoje cialo " +
			      "dlugie, ostro zakonczone rogi wyrastajace mu spod czanego " +
			      "helmu. W ostatniej chwili udaje ci sie odskoczyc, ratujac " +
			      "zycie. Niezwykle ostre poroze jednak mimo to gleboko zaglebia " +
			      "sie w twoje cialo, ciezko cie raniac.\n");

	    tell_watcher(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			 "glowa i z przerazliwa sila probuje wbic w cialo " +
			 QIMIE(victim, PL_DOP) + " dlugie, ostro zakonczone rogi " +
			 "wyrastajace mu spod czanego helmu. " + QCIMIE(victim, PL_MIA) +
			 "ratuje swoje zycie, odskakujac w ostatniej chwili. " +
			 "Niezwykle ostre poroze jednak mimo to gleboko zaglebia sie w " +
			 victim->koncowka("jego", "jej") + " cialo, ciezko " +
			 victim->koncowka("go", "ja") + " raniac.\n", victim);
	    break;
	    
	default:
	    victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			      "glowa i z przerazliwa sila probuje wbic w twoje cialo " +
			      "dlugie, ostro zakonczone rogi wyrastajace mu spod czanego " +
			      "helmu. Mimo twojej panicznej proby odsuniecia sie z drogi " +
			      "nadlatajacemu porozu, rycerz trafia cie bezblednie i z " +
			      "zawrotna moca. Czujesz jak powoli zaczyna uchodzic z ciebie " +
			      "zycie.\n");

	    tell_watcher(QCIMIE(this_object(), PL_MIA) + " bierze szeroki zamach " +
			 "glowa i z przerazliwa sila probuje wbic w cialo " +
			 QIMIE(victim, PL_DOP) + " dlugie, ostro zakonczone rogi " +
			 "wyrastajace mu spod czanego helmu. Mimo panicznego odskoku " +
			 QIMIE(victim, PL_CEL) + " nie udaje sie odsunac z drogi " +
			 "nadlatujacemu porozu. Rycerz trafia " + victim->koncowka("go", "ja") +
			 "bezblednie i z zawrotna moca, niemalze odbierajac " +
			 victim->koncowka("mu", "jej") + " zycie tym ciosem.\n", victim);

	    break;
	}
	    
	return 1;
    }

    if (victim->resolve_task(TASK_FORMIDABLE, SS_DEFENCE) > 0)
    {
	victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " ociezale przyskakuje do ciebie " +
			  "i probuje cie zaskoczyc uderzeniem zakutej w helm glowy. Bez " +
			  "trudu jednak unikasz ciosu, uskakujac zwinnie przed przeciwnikiem.\n");
	tell_watcher(QCIMIE(this_object(), PL_MIA) + " ociezale przyskakuje do " +
		     QIMIE(victim, PL_DOP) + " i probuje " + victim->koncowka("go", "ja") + 
		     " zaskoczyc uderzeniem zakutej w helm glowy. " + QCIMIE(victim, PL_MIA) +
                     " bez trudu jednak unika ciosu, uskakujac zwinnie przed przeciwnikiem.\n",
		     victim);
	return 1;
    }
    
    victim->catch_msg(QCIMIE(this_object(), PL_MIA) + " z zadziwiajaca gracja i szybkoscia " +
		      "przyskakuje do ciebie i zwala cie z nog poteznym uderzeniem zadanym, " +
		      "zakuta w ciezki czarny helm, glowa. Probujesz sie podniesc i walczyc " +
		      "dalej, lecz nogi jakos odmawiaja ci posluszenstwa.\n");
    tell_watcher(QCIMIE(this_object(), PL_MIA) + " z zadziwiajaca gracja i szybkoscia " +
		 "przyskakuje do " + QIMIE(victim, PL_DOP) + " i zwala " + 
		 victim->koncowka("go", "ja") + " z nog poteznym uderzeniem zadanym, " +
		 "zakuta w ciezki czarny helm, glowa. " + QCIMIE(victim, PL_MIA) + " probuje " +
		 "sie podniesc i wrocic do walki, lecz nogi jakos odmawiaja " +
		 victim->koncowka("mu", "jej") + " posluszenstwa.\n", victim);

    paraliz = clone_object(OBJ_PATH + "paraliz.c");
    paraliz->move(victim, 1);
    victim->add_stun();
    return 1;
}

int
q_att()
{
    if (this_player()->query_prop(IMPERIUM_STWOR_CHAOSU) == 1)
	return 0;
    set_follow(this_player(), 1.0, 1);
    return 1;
}

void
attacked_by(object ob)
{
    set_follow(ob, 1.0, 1);
    ::attacked_by(ob);
}

void
przedstaw_sie(object ob)
{
    command("przedstaw sie " + OB_NAME(ob));
}

void
add_introduced(string imie_m, string imie_b)
{
    object ob;
    if (ob = find_player(imie_m))
	set_alarm(2.0, 0.0, &przedstaw_sie(ob));
}

string
query_presentation()
{
    return "Bornhardt, Wielki Rycerz Slaanesha, czlowiek";
}

	   
