/* Soul gildi 'Klan Tygrysa'
 *
 *
 *
 * Autor: Lisev
 */
#include "defs.h"
inherit "/cmd/std/soul_cmd.c";
inherit (PATH + "engine/system");
void cios_reload(object player);
public string
get_soul_id()
{
        return GUILD_NAZWA;
}
public mapping
query_cmdlist()
{
        return (["sklnij":"sklnij",
                 "sm":"sm",
                 "sokrzyk":"sokrzyk",
                 "spokaz": "spokaz",
                 "spoleruj":"spoleruj",
                 "spowitaj":"spowitaj",
                 "spozegnaj":"spozegnaj",
                 "ssplun":"ssplun",
                 "supomnij":"supomnij",
                 "susmiechnij":"susmiechnij",
                 "szasmiej":"szasmiej",
                 "szlosc":"szlosc",
                 "slista":"slista",
                 "srezygnuj":"srezygnuj",
                 "spomoc": "spomoc",
                 "smianuj": "smianuj",
                 "susun": "susun",
                 "snadaj": "snadaj",
                 "snazwisko": "snazwisko",
                 "szabierz": "szabierz",
                 "swrecz": "swrecz",
                 "swywal": "swywal",
                 "spoprzyj": "spoprzyj",
                 "scios":"scios",
                 "spiesn":"spiesn",
                 "smlynkuj":"smlynkuj",
                 "szamien":"szamien",
                 "szion":"szion"]);
}
// Umiejetnosci specjalne
void
piesn_reload(object player)
{
	player->set_piesn(0);
	player->catch_msg("Wydaje ci sie ze jestes w stanie zaspiewac piesn bojowa ponownie.\n");
}
void
spiewamy(object player, int faza)
{
	if(faza == 6)
	{
		TP->set_stat_extra(SS_STR, 0);
		TP->set_stat_extra(SS_CON, 0);
		TP->set_stat_extra(SS_DEX, 0);
		TP->set_stat_extra(SS_DIS, 0);
		TP->set_piesn(2);
		set_alarm(40.0, 0.0, &piesn_reload(player));
		TP->catch_msg("Zmeczony walka przestajesz spiewac piesn bojowa i czujesz jak duch walki cie opuszcza.\n");
		return;
	}
	if(player->query_attack())
	switch(random(5))
	{
		case 0..2: break;
		case 3: player->catch_msg("Nabierasz powietrza w pluc i kontynuujesz swa bojowa piesn zagrzewajac sie "+
		                          "jeszcze bardziej do walki.\n");
		        tell_room(environment(player), QCIMIE(player, PL_MIA) + " nabiera powietrza w pluca i kontynuuje swa "+
		        "piesn bojowa zagrzewajac sie do walki jeszcze bardziej.\n", ({ player })); break;
		case 4: player->catch_msg("Slowa twej piesni bojowej dodaja ci sil i z jeszcze wieksza sila nacierasz na "+
		                          "swego wroga!\n");
		        tell_room(environment(player), "Widzisz jak slowa piesni " + QIMIE(player, PL_DOP) +
		        " zagrzewaja " + player->koncowka("go", "ja") + " do walki i naciera " +
		        player->koncowka("on", "ona") + " na swego wroga z jeszcze wieksza sila!\n", ({ player })); break;
	}
	set_alarm(8.0, 0.0, &spiewamy(player, faza + 1));
}
int
spiesn(string str)
{
	NF("Musisz zlapac troche powietrza nim rozpoczniesz kolejna piesn bojowa.\n");
	if(TP->query_piesn() == 2) return 0;
	NF("Jestes w trakcie spiewania!\n");
	if(TP->query_piesn() == 1) return 0;
	TP->set_piesn(1);
	TP->catch_msg("Spiewasz bojowa piesn Klanu Tygrysa czujesz wzrastajaca w tobie dume i agresje. "+
	              "W melodii tej piesni jest cos, co jak zadlo budzi w tobie sile i odwage, "+
	              "przekazujac szalenczy zapal popychajacy cie do dzialania.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " spiewa bojowa piesn Klanu Tygrysa a ty czujesz "+
	              "wzrastajaca w " + QIMIE(TP, PL_NAR) + " dume i agresje. W melodii tej piesni "+
	              "jest cos, co jak zadlo budzi w " + QIMIE(TP, PL_NAR) + " sile i odwage, "+
	              "przekazujac szalenczy zapal popychajacy " + QIMIE(TP, PL_DOP) + " do dzialania.\n", ({ TP }));
	set_alarm(8.0, 0.0, &spiewamy(TP, 0));
	TP->set_stat_extra(SS_STR, random(30) + 20);
	TP->set_stat_extra(SS_CON, random(30) + 20);
	TP->set_stat_extra(SS_DEX, random(30) + 20);
	TP->set_stat_extra(SS_DIS, random(30) + random(50));
	TP->heal_hp(F_MAX_HP(TP->query_stat(SS_CON)) - F_MAX_HP(TP->query_stat(SS_CON) - TP->query_stat_extra(SS_CON)));
	return 1;
}
void
middle_attack(object player)
{
    if (!objectp(player->query_attack()))
    {
        write("Nie widzisz swojego celu wiec przestajesz przygotowywac sie do zadania ciosu.\n");
        player->set_cios(0);
        return;
    }
    player->set_cios(2);
    player->add_prop(LIVE_O_SPELL_ATTACK, this_object());
}
int
scios(string str)
{
	object *cel;
	NF("Wlasnie przygotowujesz sie do zadania ciosu.\n");
	if(TP->query_cios() == 1) return 0;
	NF("Musisz troche odpoczac nim zadasz kolejny cios.\n");
	if(TP->query_cios() == 2) return 0;
	NF("Musisz dobywac dwie bronie by zaatakowac.\n");
	if(!TP->query_weapon(W_LEFT) || !TP->query_weapon(W_RIGHT)) return 0;
	if(!str)
	{
	   if(TP->query_attack())
	      cel = ({ TP->query_attack() });
	}
	else if(str)
	        cel = parse_this(str, "'w' %l:" + PL_DOP);
	NF("Kogo chcesz zaatakowac?\n");
	if(!sizeof(cel)) return 0;
    NF("To nie jest sluszne posuniecie by atakowac takiego przeciwnika!\n");
    if (!F_DARE_ATTACK(TP, cel[0]) && (TP->query_attack() != cel[0])) return 0;
	if(sizeof(cel) && TP->query_attack() != cel[0])
	{
		TP->catch_msg("W twych oczach plonie ogien gdy atakujesz " + QIMIE(cel[0], PL_BIE) + ".\n");
		cel[0]->catch_msg("W oczach " + QIMIE(TP, PL_DOP) + " plonie ogien gdy zaczyna nacierac na Ciebie!\n");
		tell_room(environment(TP), "W oczach " + QIMIE(TP, PL_DOP) + " plonie ogien gdy " + TP->koncowka("ten", "ta") +
		                           " naciera na " + QIMIE(cel[0], PL_BIE) + "!\n", ({ TP, cel[0] }));
		TP->attack_object(cel[0]);
	}
	TP->catch_msg("Przygotowujesz sie do zadania ciosu specjalnego.\n");
	TP->set_cios(1);
	set_alarm(1.0, 0.0, &middle_attack(TP));
	return 1;
}
void
cios_hurt(object player, object cel)
{
	object lewa_bron;
	object prawa_bron;
	int hit, pen;
	mixed *hitresult;
	string jak;
	hit = query_klan_hit(player, cel);
	pen = query_klan_pen(player, cel) * 2 / 3;
	lewa_bron = player->query_weapon(W_LEFT);
	prawa_bron = player->query_weapon(W_RIGHT);
	hitresult = cel->hit_me(pen, W_SLASH, hit, player, -1);
	setuid();
	seteuid(getuid());
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(cel->query_real_name())   +
                                      " PEN: " + pen +
                                      " HIT: " + hit +
                                      " %PHURT: " + hitresult[0] +
                                      " DAM: " + hitresult[3] + "\n");
	switch(hitresult[0])
	{
		case -1..5: jak = "nieznacznie."; break;
		case 6..10: jak = "lekko."; break;
		case 11..17: jak = "niezle."; break;
		case 18..26: jak = "dosyc mocno."; break;
		case 27..45: jak = "powaznie."; break;
		case 46..75: jak = "potwornie az krew tryska w powietrze."; break;
		case 76..99: jak = "niemalze masakrujac!"; break;
		default: jak = "masakrujac bezlitosnie!"; break;
	}
	player->catch_msg("Podczas swego mlynka ruszasz na " + QIMIE(cel, PL_BIE) +
	                  " i siekasz " + cel->koncowka("go", "ja") +
	                  " " + lewa_bron->koncowka("swym", "swoja") +
	                  " " + lewa_bron->query_short(PL_NAR) + " raniac " + jak + ".\n");
	cel->catch_msg("Widzisz jak " + QIMIE(player, PL_MIA) + " zmierza w twoja strone "+
	                  "podczas swego mlynka i trafia cie " + lewa_bron->koncowka("swym", "swoja") +
	                  " " + lewa_bron->query_short(PL_NAR) + " i rani " + jak + ".\n");
	tell_room(environment(player), QCIMIE(TP, PL_MIA) + " podczas swego mlynka naciera na " +
	                QIMIE(cel, PL_BIE) + " i trafia " + cel->koncowka("go", "ja") + " " +
	                lewa_bron->koncowka("swym", "swoja") + " " +
	                lewa_bron->query_short(PL_NAR) + " i rani " + jak + "\n", ({ player, cel }));
    if(cel->query_hp() < 1) cel->do_die(player);
}
void
cios_instant_kill(object player, object cel)
{
	object prawa_bron;
	prawa_bron = player->query_weapon(W_RIGHT);
	player->catch_msg("W momencie gdy masz zadac cios " + QIMIE(cel, PL_CEL) + " widzisz luke w "+
	                  cel->koncowka("jego", "jej") + " obronie i dzgasz " +
	                  prawa_bron->koncowka("swym", "swoja") + " " +
	                  prawa_bron->query_short(PL_NAR) + " z calych sil i przebijasz " +
	                  cel->koncowka("go", "ja") + " na wylot! Szybko wyszarpujesz bron ze stojacego "+
	                  "jeszcze ciala i odpychasz sie noga nadajac sobie predkosc do dalszego mlynkowania "+
	                  "a przeciwnik twoj, chcac niechcac bezwladnie opada na ziemie.\n");
	cel->catch_msg("W oczach " + QIMIE(player, PL_DOP) + " widzisz blysk gdy "+
	                  "naciera na ciebie i szybkim pchnieciem dzga cie " +
	                  prawa_bron->koncowka("swym", "swoja") + " " +
	                  prawa_bron->query_short(PL_NAR) + " z calych sil. "+
	                  "Ostrze bez problemu wnika w twe cialo a ty czujesz potworny bol, ktory zlagodzony jest "+
	                  "kopnieciem twego wroga odsylajacym cie z tego swiata. Nastaje ciemnosc a bol przemija.\n");
	tell_room(environment(player), "W momencie gdy " + QIMIE(player, PL_MIA) + " zaczyna nacierac na " +
	                  QIMIE(cel, PL_DOP) + " w oczach " + player->koncowka("jego", "jej") +
	                  " widac iskierke i nim ona niknie ostrze " + prawa_bron->query_short(PL_DOP) +
	                  " po szybkim pchnieciu wnika w cialo " + QIMIE(cel, PL_DOP) + " przebijajac " +
	                  cel->koncowka("go", "ja") + " na wylot! " + QCIMIE(player, PL_MIA) + " lekkim kopnieciem "+
	                  "odpycha martwe cialo swego wroga nadajac sobie predkosc do kontynuowania mlynka! "+
	                  QCIMIE(cel, PL_MIA) + " bezwladnie opada na ziemie.\n", ({ player, cel }));
	setuid();
	seteuid(getuid());
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(cel->query_real_name())   +
                                      " CRITICAL KILLING HIT for " + cel->query_hp() + "hp!\n");
	cel->set_hp(0);
	cel->do_die(player);
}
void
cios_stun(object player, object cel)
{
	object stun;
	object bron_lewa, bron_prawa;
	bron_lewa = player->query_weapon(W_LEFT);
	bron_prawa = player->query_weapon(W_RIGHT);
	setuid();
	seteuid(getuid());
	stun = clone_object(PATH + "obj/stun");
	stun->move(cel);
	cel->add_stun();
	player->catch_msg("Podczas kolejnego mlynka wyciagasz jednoczesnie " +
	        bron_prawa->query_short(PL_BIE) + " i " + bron_lewa->query_short(PL_BIE) +
	        " dla utrzymania rownowagi i stojac plecami do " + QIMIE(cel, PL_DOP) +
	        " wprowadzasz szybki cios stopa trafiajac " + cel->koncowka("go", "ja") +
	        " prosto w splot sloneczny tak, ze traci oddech na kilka chwil.\n");
	cel->catch_msg(QCIMIE(player, PL_MIA) + " podczas kolejnego mlynka wypuszcza jednoczesnie "+
	        bron_prawa->query_short(PL_BIE) + " i " + bron_lewa->query_short(PL_BIE) +
	        " przed siebie i ustawia sie plecami do ciebie by chwile potem wprowadzic "+
	        "potezny cios ze stopy w twoj splot sloneczny. Tracisz oddech od tak poteznego "+
	        "uderzenia.\n");
	tell_room(environment(player), QCIMIE(player, PL_MIA) + " podczas kolejnego mlynka "+
	        "wypuszcza jednoczesnie "+ bron_prawa->query_short(PL_BIE) +
	        " i " + bron_lewa->query_short(PL_BIE) + " przed siebie i ustawia sie plecami "+
	        "do " + QIMIE(cel, PL_DOP) + " by chwile potem wprowadzic "+
	        "potezny cios ze stopy w splot sloneczny ofiary. " + QCIMIE(cel, PL_MIA) +
	        " traci oddech na jakis czas od uderzenia.\n", ({ player, cel }));
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(cel->query_real_name())   +
                                      " STUN HIT!\n");
}
void
cios_disarm(object player, object cel)
{
	object *enemy_weapons;
	object bron, hands;
	object shadow;
	object bron_prawa;
    if(!sizeof(cel->query_weapon(-1))) { cios_hurt(player, cel); return; }
    bron_prawa = player->query_weapon(W_RIGHT);
    enemy_weapons = cel->query_weapon(-1);
    bron = enemy_weapons[random(sizeof(enemy_weapons))];
    hands = bron->query_attack_id();
    player->catch_msg("Podczas kolejnego mlynka nacierasz na " + QIMIE(cel, PL_BIE) +
                      " i w chwili gdy masz " + cel->koncowka("go", "ja") +
                      " trafic " + bron_prawa->koncowka("swoim", "swoja") +
                      " " + bron_prawa->query_short(PL_NAR) + " odruchowo zaslania " +
                      "sie " + cel->koncowka("on", "ona") + " " + bron->koncowka("swoim", "swoja") +
                      " " + bron->query_short(PL_NAR) + " jednak cios twoj byl tak potezny, " +
                      "ze przeciwnik wypuszcza swoja bron.\n");
    cel->catch_msg(QCIMIE(player, PL_MIA) + " naciera na ciebie podczas kolejnego mlynka "+
                      "i stara sie trafic ciebie " + bron_prawa->koncowka("swoim", "swoja") +
                      " " + bron_prawa->query_short(PL_NAR) + " jednak zaslaniasz sie " +
                      bron->koncowka("swoim", "swoja") + " " + bron->query_short(PL_NAR) +
                      " starajac sie sparowac cios. Uderze bylo potezne az iskry zablysnely "+
                      "w powietrzu a ty odruchowo z bolu wypuszczasz bron.\n");
    tell_room(environment(player), QCIMIE(player, PL_MIA) + " naciera na " +
                      QIMIE(cel, PL_BIE) + " podczas kolejnego mlynka i stara sie trafic " +
                      cel->koncowka("go", "ja") + " " +bron_prawa->koncowka("swoim", "swoja") +
                      " " + bron_prawa->query_short(PL_NAR) + " jednak " + QIMIE(cel, PL_MIA) +
                      " odruchowo paruje cios " + bron->koncowka("swoim", "swoja") +
                      " " + bron->query_short(PL_NAR) + " tak, ze az iskry ida w powietrze. "+
                      "Grymas na twarzy " + QIMIE(cel, PL_DOP) + " potwierdza teze o mocy tego "+
                      "zderzenia, a chwile pozniej " + QIMIE(cel, PL_MIA) + " opuszcza swa bron.\n", ({ cel, player}));
    set_this_player(cel);
    bron->unwield_me();
    set_this_player(player);
	setuid();
	seteuid(getuid());
	shadow = clone_object(PATH +"obj/wield_shadow");
	shadow->shadow_me(cel);
	shadow->disarm_hand(hands,itof(5 + random(15)));
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(cel->query_real_name())   +
                                      " DISARM HIT!\n");
}
void
cios_armour_break(object player, object cel)
{
	object *armoury;
	object zbroja, bron_lewa, bron_prawa;
	if(!sizeof(armoury = cel->query_armour(-1))) { cios_hurt(player, cel); return; }
	bron_lewa = player->query_weapon(W_LEFT);
	bron_prawa = player->query_weapon(W_RIGHT);
	zbroja = armoury[random(sizeof(armoury))];
	player->catch_msg("Namierzasz swoj kolejny cel, a jest nim " + QIMIE(cel, PL_BIE) +
	                  " i wykorzystujac cala predkosc obrotu uderzasz " + cel->koncowka("go", "ja") +
	                  " jednoczesnie " + bron_lewa->koncowka("swoim", "swoja") +
	                  " " + bron_lewa->query_short(PL_NAR) + " oraz " + bron_prawa->koncowka("swoim", "swoja") +
	                  " " + bron_prawa->query_short(PL_NAR) + " prosto w " + zbroja->query_short(PL_BIE) +
	                  " " + QIMIE(cel, PL_DOP) + ". Uderzenie bylo tak potezne ze zbroja rozpada sie na "+
	                  "drobne kawalki!\n");
	cel->catch_msg(QCIMIE(player, PL_MIA) + " spoglada na ciebie i wykorzystujac predkosc obrotu " +
	                  "uderza cie jednoczesnie " + bron_lewa->koncowka("swoim", "swoja") +
	                  " " + bron_lewa->query_short(PL_NAR) + " oraz " + bron_prawa->koncowka("swoim", "swoja") +
	                  " " + bron_prawa->query_short(PL_NAR) + " jednak " + zbroja->koncowka("twoj", "twoja") +
	                  " " + zbroja->query_short(PL_BIE) + " paruje to potezne uderzenie i pozostajesz "+
	                  "bez szwanku, choc sama ulega zniszczeniu.\n");
    tell_room(environment(player), QCIMIE(player, PL_MIA) + " spoglada na " + QIMIE(cel, PL_BIE) +
                      " i wykorzystujac predkosc obrotu uderza " + cel->koncowka("go", "ja") +
                      " jednoczesnie " + bron_lewa->koncowka("swoim", "swoja") +
	                  " " + bron_lewa->query_short(PL_NAR) + " oraz " + bron_prawa->koncowka("swoim", "swoja") +
	                  " " + bron_prawa->query_short(PL_NAR) + " jednak " +
	                  zbroja->query_short(PL_BIE) + " " + QIMIE(cel, PL_DOP) + " paruje to potezne uderzenie "+
	                  "i chroniac wlasciciela, choc sama ulega zniszczeniu.\n", ({ player, cel}));
	zbroja->remove_broken(-1);
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(cel->query_real_name())   +
                                      " ARMOUR BRAKE HIT!\n");
}
void
cios_double_hit(object player, object enemy1, object enemy2)
{
	mixed *hit_enemy1, *hit_enemy2;
	object bron_lewa, bron_prawa;
	int hit, pen;
	hit = query_klan_hit(player, enemy1);
	pen = query_klan_pen(player, enemy1) * 2 / 3;
	bron_lewa = player->query_weapon(W_LEFT);
	bron_prawa = player->query_weapon(W_RIGHT);
	hit_enemy1 = enemy1->hit_me(pen, W_SLASH, hit, player, -1);
	setuid();
	seteuid(getuid());
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(enemy1->query_real_name())   +
                                      " PEN: " + pen +
                                      " HIT: " + hit +
                                      " %PHURT: " + hit_enemy1[0] +
                                      " DAM: " + hit_enemy1[3] + "\n");
	hit = query_klan_hit(player, enemy2);
	pen = query_klan_pen(player, enemy2) * 2 / 3;
	hit_enemy2 = enemy2->hit_me(pen, W_SLASH, hit, player, -1);
	write_file(PATH + "log/mlynek", "Attacker: " + capitalize(player->query_real_name()) +
                                      " Enemy: " + capitalize(enemy2->query_real_name())   +
                                      " PEN: " + pen +
                                      " HIT: " + hit +
                                      " %PHURT: " + hit_enemy2[0] +
                                      " DAM: " + hit_enemy2[3] + "\n");
    TP->catch_msg("Twoim nastepnym celem zdaje sie byc " + QIMIE(enemy1, PL_MIA) + " i szybkim piruetem "+
                  "przemykasz sie " + enemy1->koncowka("mu", "jej") + " za plecy i tniesz " +
                  enemy1->koncowka("go", "ja") + " " + bron_lewa->koncowka("swym", "swoja") +
                  " " + bron_lewa->query_short(PL_NAR) + " cala dlugoscia ostrza. " +
                  "Spostrzegasz sie ze tuz obok ciebie znajduje sie kolejny wrog i nie tracac "+
                  "predkosci tniesz " + enemy2->koncowka("go", "ja") + " koncowka ostrza " +
                  bron_prawa->koncowka("twego", "twojej") + " " +
                  bron_prawa->query_short(PL_DOP) + ". Fontanna krwii unosi sie w powietrzu od twych " +
                  "atakow a przeciwnicy twoi z dziwna mina spogladaja na siebie nazwajem.\n");
    enemy1->catch_msg("Widzisz jak " + QIMIE(player, PL_MIA) + " zaczyna szybko wirowac i nienadazajac "+
                  "za " + player->koncowka("jego", "jej") + " ruchami pozwalasz " +
                  player->koncowka("mu", "jej") + " przemknac za twe plecy! Czujesz jak ostrze " +
                  player->koncowka("jego", "jej") + " " + bron_lewa->query_short(PL_DOP) +
                  " tnie cie przez cala dlugosc plecow a przerazliwy bol lapie cie w grymasie. " +
                  "Spostrzegasz iz atak nie skonczyl sie jedynie na Tobie i " +
                  QIMIE(player, PL_BIE) + " koncowka ostrza " + bron_prawa->koncowka("swego", "swojej") +
                  " " + bron_prawa->query_short(PL_DOP) + " tnie " + QIMIE(enemy2, PL_BIE) +". " +
                  "W powietrzu unosi sie fontanna krwii twojej i " + QIMIE(enemy2, PL_DOP) +
                  " a ty spogladajac na " + QIMIE(enemy2, PL_BIE) + " laczysz sie z " +
                  enemy2->koncowka("nim", "nia") + " wspolnym cierpieniem po otrzymanym ciosie.\n");
    enemy2->catch_msg("Widzisz jak " + QIMIE(player, PL_MIA) + " zaczyna wirowac przed " +
                  QIMIE(enemy1, PL_NAR) + " i szybkim zwodem przemyka sie " + enemy1->koncowka("mu", "jej") +
                  " za plecy tnac " + enemy1->koncowka("go", "ja") + " " +
                  bron_lewa->koncowka("swoim", "swoja") + " " + bron_lewa->query_short(PL_NAR) +
                  " po calej dlugosci plecow. Myslac iz atak ten skonczy sie jedynie na " +
                  QIMIE(enemy1, PL_NAR) + " rozluzniasz obrone jednak ku twemu zdziwieniu " +
                  QIMIE(player, PL_MIA) + " " + bron_prawa->koncowka("swoja", "swoim") +
                  " " + bron_prawa->query_short(PL_NAR) + " dzierzona w prawej rece " +
                  "zahacza cie koncowka ostrza a krew momentalnie unosi sie w powietrze. "+
                  "Fontanna polaczanej twojej i " + QIMIE(enemy1, PL_DOP) + " krwii unosi sie "+
                  "w powietrzu a ty laczysz sie we wspolnym cierpnieniu z " + QIMIE(enemy1, PL_DOP) +
                  " po otrzymanym ciosie.\n");
    tell_room(environment(player), QCIMIE(player, PL_MIA) + " spoglada na " + QIMIE(enemy1, PL_BIE) +
                  " i szybkim piruetem przemyka sie " + enemy1->koncowka("mu", "jej") + " za plecy "+
                  "i tnie " + enemy1->koncowka("go", "ja") + " " +
                  bron_lewa->koncowka("swoim", "swoja") + " " +
                  bron_lewa->query_short(PL_NAR) + " przez cala dlugoscia ostrza. Wykorzystujac "+
                  "swoja predkosc obrotu tnie " + QIMIE(enemy2, PL_BIE) + " koncowka ostrza " +
                  bron_prawa->koncowka("swojego", "swojej") + " " +
                  bron_prawa->query_short(PL_DOP) + " trzymana w prawej rece a krew momentalnie "+
                  "bryzga w powietrze. " + QCIMIE(enemy1, PL_MIA) + " spoglada na " + QIMIE(enemy2, PL_BIE) +
                  " i laczy sie z " + enemy2->koncowka("nim","nia") + " we wspolnym cierpieniu spowodowanym "+
                  "tak potwornym ciosem.\n", ({ player, enemy1, enemy2 }));
	if(enemy1->query_hp() < 1) enemy1->do_die(player);
	if(enemy2->query_hp() < 2) enemy2->do_die(player);
}
void
mlynek(object player, object *gracze)
{
	object cel, opt_cel;
	object *pomoc;
	int i;

	pomoc = gracze;
	for(i=0; i<sizeof(gracze); i++)
	      if(gracze[i]->query_guild_name_occ() == GUILD_NAZWA ||
	         gracze[i]->query_prop(OBJ_I_INVIS) ||
	         !CAN_SEE(TP, gracze[i]) ||
	         environment(gracze[i]) != environment(player)) pomoc -= ({ gracze[i] });
	gracze = pomoc;
	if(!sizeof(gracze)) return;
	cel = gracze[random(sizeof(gracze))];
	gracze -= ({ cel });
	if(sizeof(gracze)) opt_cel = gracze[random(sizeof(gracze))];
	player->attack_object(cel);
	switch(random(105))
	{
		case 0..15: cios_stun(player, cel); break;
		case 76..80: cios_disarm(player, cel); break;
		case 81..86: cios_armour_break(player, cel); break;
		case 87: cios_instant_kill(player, cel); break;
		case 88..100: if(objectp(opt_cel))
		              {
						  gracze -= ({ opt_cel });
						  cios_double_hit(player, cel, opt_cel);
						  break;
					  }
		default: cios_hurt(player, cel); break;
	}
	if(sizeof(gracze))
	  set_alarm(0.5, 0.0, &mlynek(player, gracze));
}
int
smlynkuj(string str)
{
	object *gracze;
	object *pomoc;
	object bron_lewa, bron_prawa;
	int i;
	NF("Mlynkuj tutaj?\n");
	if(str != "tutaj" || !str) return 0;
	NF("Musisz dobywac dwie bronie by zaatakowac.\n");
	if(!objectp(bron_lewa = TP->query_weapon(W_LEFT)) || !objectp(bron_prawa = TP->query_weapon(W_RIGHT))) return 0;
	NF("Musisz odpoczac nim rozpoczniesz mlynek.\n");
	if(TP->query_cios() != 0) return 0;
	gracze = FILTER_LIVE(all_inventory(environment(TP))) - ({ TP });
	pomoc = gracze;

	for(i=0; i<sizeof(gracze); i++)
	      if(gracze[i]->query_guild_name_occ() == GUILD_NAZWA ||
	         gracze[i]->query_prop(OBJ_I_INVIS) ||
	         !CAN_SEE(TP, gracze[i])) pomoc -= ({ gracze[i] });

	gracze = pomoc;
	NF("Nie ma tu zadnych wrogow wiec nie ma sensu mlynkowac.\n");
	if(!sizeof(gracze)) return 0;
	TP->set_cios(2);
	TP->catch_msg("Prezentujac swoj wojenny kunszt, mlynkujesz swymi bronmi w wirze walki. " +
	              "Twoje bronie migocza i spiewaja, w spiewie ciezkiej jak glaz i ostrej jak "+
	              "brzytwa stali jest dzika zadza krwi. Ruszajac na swych przeciwnikow klingi "+
	              bron_lewa->query_short(PL_DOP) + " i " + bron_prawa->query_short(PL_DOP) + " " +
	              "blyszcza w powietrzu a na twej twarzy pojawia sie tajemniczy usmiech!\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " prezentujac swoj wojenny kunszt, mlynkuje "+
	              "swymi bronmi w wirze walki. Bronie migocza i spiewaja, w spiewie ciezkiej jak "+
	              "glaz i ostrej jak brzytwa stali jest dzika zadza krwi. Rusza na swych "+
	              "przeciwnikow a klingi "+ bron_lewa->query_short(PL_DOP) + " i " +
	              bron_prawa->query_short(PL_DOP) + " blyszcza w powietrzu a na " +
	              TP->koconwka("jego", "jej") + " twarzy pojawia sie tajemniczy usmiech!\n", ({TP}));
    mlynek(TP, gracze);
    set_alarm(20.0, 0.0, &cios_reload(TP));
	return 1;
}
void
cios_reload(object player)
{
	player->set_cios(0);
	player->catch_msg("Jestes gotow" + player->koncowka("", "a") + " by zadac kolejny cios.\n");
}
void
spell_attack(object me, object enemy)
{
	int hit, pen;
	mixed *hitresult;
	string jak;
	object bron_lewa, bron_prawa;
	set_this_player(me);
	hit = query_klan_hit(me, enemy);
	pen = query_klan_pen(me, enemy);
	if(!objectp(enemy))
	{
		TP->catch_msg("Twoj przeciwnik oddalil sie od ciebie.\n");
		TP->set_cios(0);
		return;
	}
	if(!objectp(bron_lewa = TP->query_weapon(W_LEFT)) || !objectp(bron_prawa = TP->query_weapon(W_RIGHT)))
	{
		TP->catch_msg("Nie dobywasz dwoch broni wiec rezygnujesz z ataku specjalnego.\n");
		TP->set_cios(0);
		return;
	}
	hitresult = enemy->hit_me(pen, W_SLASH, hit, TP, -1);
	setuid();
	seteuid(getuid());
	write_file(PATH + "log/scios", "Attacker: " + capitalize(me->query_real_name()) +
                                      " Enemy: " + capitalize(enemy->query_real_name())   +
                                      " PEN: " + pen +
                                      " HIT: " + hit +
                                      " %PHURT: " + hitresult[0] +
                                      " DAM: " + hitresult[3] + "\n");
	switch(hitresult[0])
	{
		case -1..5: jak = "nieznacznie."; break;
		case 6..10: jak = "lekko."; break;
		case 11..17: jak = "niezle."; break;
		case 18..26: jak = "dosyc mocno."; break;
		case 27..45: jak = "powaznie."; break;
		case 46..75: jak = "potwornie az krew tryska w powietrze."; break;
		case 76..99: jak = "niemalze masakrujac!"; break;
		default: jak = "masakrujac bezlitosnie!"; break;
	}
	TP->catch_msg("Naglym wypadem uderzasz " + QIMIE(enemy, PL_DOP) + " barkiem odrzucajac o kilka krokow w "+
	              "tyl i ustawiasz sie w dogodnej pozycji do wyprowadzenia zabojczego ciosu. Korzystajac z "+
	              "zaskoczenia mlynkujesz zwodniczo " + bron_prawa->koncowka("swoim", "swoja") + " " +
	              bron_prawa->query_short(PL_NAR) + " przed " + QIMIE(enemy, PL_NAR) + ". Chwile pozniej wprowadzasz "+
	              "potworny cios " + bron_lewa->koncowka("swoim", "swoja") + " " +
	              bron_lewa->query_short(PL_NAR) + " " + bron_lewa->koncowka("trzymanym", "trzymana") +
	              " w lewej rece, ktory dosiega ciala " + QIMIE(enemy,PL_DOP) + " i rani " + enemy->koncowka("go", "ja") +
	              " " + jak + "\n");
	enemy->catch_msg(QCIMIE(TP, PL_MIA) + " naglym wypadem uderza cie barkiem odrzucajac o kilka krokow w tyl i "+
	              "ustawia sie w dogodnej pozycji do wyprowadzenia zabojczego ciosu. " + QCIMIE(TP, PL_MIA) +
	              "korzystajac z zaskoczenia mlynkuje zwodniczo "+ bron_prawa->koncowka("swoim", "swoja") +
	              " " + bron_prawa->query_short(PL_NAR) +" przed toba. Zbyt dlugo przypatrywales sie " +
	              TP->koncowka("jego", "jej") + " broni i nie zauwazyles jak wprowadza morderczy cios " +
	              bron_lewa->koncowka("swoim", "swoja") + bron_lewa->query_short(PL_NAR) +
	              " " + bron_lewa->koncowka("trzymanym", "trzymana") +
	              " w lewej rece, ktora dosiega twego ciala i rani cie " + jak + "\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " naglym wypadem uderza " + QIMIE(enemy, PL_BIE) +
	              " barkiem odrzucajac o kilka krokow w tyl i ustawia sie w dogodnej pozycji do wyprowadzenia "+
	              "zabojczego ciosu. " + QCIMIE(TP, PL_MIA) + " korzystajac z zaskoczenia mlynkuje zwodniczo "+
	              bron_prawa->koncowka("swym", "swoja") + " " +  bron_prawa->query_short(PL_NAR) + " przed " +
	              QIMIE(enemy, PL_NAR) +". Chwile pozniej wprowadza potworny cios " +
	              bron_lewa->koncowka("swoim", "swoja") + " " + bron_lewa->query_short(PL_NAR) + " "
	              + bron_lewa->koncowka("trzymanym", "trzymana") +
	              " w lewej rece, ktory dosiega ciala " + QIMIE(enemy, PL_DOP) +  " i rani " +
	              enemy->koncowka("go", "ja") + " " + jak + "\n", ({ TP, enemy }));
	if(enemy->query_hp() < 1) enemy->do_die(TP);
	TP->set_cios(2);
	set_alarm(14.0, 0.0, &cios_reload(TP));
}
// Funkcje administracyjne
int
swywal(string str)
{
    if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
    NF("Kogo chcesz wyrzucic z klanu Tygrysa?\n");
	if(!str) return 0;
	NF(capitalize(str) + " nie jest czlonkiem Klanu Tygrysa!\n");
	if(!SILNIK->query_czlonek(str)) return 0;
	NF("Przeciez " + capitalize(str) + " juz jest wydalony z klanu.\n");
	if(SILNIK->query_banished(str)) return 0;
	SILNIK->set_data(str, KLAN_RANGA, BANISHED);
	if(objectp(find_player(str))) SILNIK->logowanie(find_player(str));
	TP->catch_msg("Wydaliles " + capitalize(str) + " z Klanu Tygrysa.\n");
	return 1;
}
int
swrecz(string str)
{
	object *cel;
	object shadow, pas;
	mixed result;
    if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
    NF("Komu chcesz wreczyc pas?\n");
    if(!str) return 0;
    cel = parse_this(str, "'pas' %l:" + PL_CEL);
    if(sizeof(cel) != 1) return 0;
    NF(capitalize(cel[0]->query_real_name()) + " nie jest kandydatem!\n");
    if(!SILNIK->query_czlonek(cel[0]->query_real_name())) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " zostal wyrzucony z Klanu Tygrysa wiec nie mozesz mu wreczyc pasa.\n");
	if(SILNIK->query_banished(cel[0]->query_real_name())) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " juz jest samurajem i nie potrzebuje nowego pasa.\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == REGULAR) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " jest Hatamoto Klanu Tygrysa wiec po co mu nowy pas?\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == HATAMOTO) return 0;
	NF("Juz jest czlonkiem innej gildii zawodowej!\n");
	if(cel[0]->query_guild_member(GUILD_TYP)) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " nie zdobyl wszystkich poparc.\n");
	if(!SILNIK->czy_mozna_przyjac(cel[0]->query_real_name())) return 0;
	NF("Cos sie spierdolilo.\n");
	if(!SILNIK->promote(cel[0]->query_real_name())) return 0;
    notify_fail("Cos sie zepsulo z shadowem. Zglos to do opiekuna gildii jak najszybciej!\n");
    setuid();
    seteuid(getuid());
    shadow = clone_object(SHADOW);
    if ((result = shadow->shadow_me(cel[0], GUILD_TYP, GUILD_STYLE, GUILD_NAZWA)) != 1)
    {
    	shadow->destruct();
    	return 0;
    }
    pas = clone_object(GUILD_ITEM);
    if(pas)
    {
		pas->move(cel[0],1);
		cel[0]->catch_msg(QCIMIE(TP, PL_MIA) + " wrecza Ci pas, przyjmujac Cie do samurajow.\n");
		TP->catch_msg("Przyjmujesz " + QIMIE(cel[0], PL_BIE) + " do samurajow wreczajac mu pas.\n");
		SILNIK->logowanie(cel[0]);
	}
	else
	    TP->catch_msg("Cos sie zjebalo z pasem, zglos sie do opiekuna.\n");
    return 1;
}
int
szabierz(string str)
{
	string *text, imie;
    int    i;
    if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
	NF("Komu chcesz zabrac przydomek/nazwisko?");
	if(!str) return 0;
    text = explode(str, " ");
    NF("Poparwna skladnia 'szabierz [imie] [przydomek/nazwisko]'\n");
    if(sizeof(text) != 2) return 0;
    imie = text[0];
    NF(capitalize(imie) + " nie jest samurajem!\n");
    if(!SILNIK->query_czlonek(imie)) return 0;
    NF("Poparwna skladnia 'szabierz [imie] [przydomek/nazwisko]'\n");
    switch(text[1])
    {
		case "przydomek": SILNIK->set_data(imie, KLAN_PRZYDOMEK, 0);
		                  TP->catch_msg("Przydomek " + capitalize(imie) + " usuniety.\n");
		                  break;
		case "nazwisko": SILNIK->set_data(imie, KLAN_NAZWISKO, 0);
		                 TP->catch_msg("Nazwisko " + capitalize(imie) + " usuniete.\n");
		                 break;
		default: return 0;
	}
	return 1;
}
int
snazwisko(string str)
{
   string *text, imie, title = "";
   int    i;
   if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
   NF("Komu i jakie chcesz nadac nazwisko?\n");
   if(!str) return 0;
   text = explode(str, " ");
   if(sizeof(text) < 2) return 0;
   imie = text[0];
   NF(capitalize(imie) + " nie nalezy do Klanu Tygrysa!\n");
   if(!SILNIK->query_czlonek(imie)) return 0;
   NF(capitalize(imie) + " nie jest jeszcze samurajem!\n");
   if(SILNIK->query_ranga(imie) == APPLICANT) return 0;
   for(i=1; i<sizeof(text); i++)
   {
      title = title + text[i];
      if(i != (sizeof(text)-1)) title = title + " ";
   }
   SILNIK->set_nazwisko(imie, title);
   TP->catch_msg("Od teraz " + capitalize(imie) + " bedzie dzierzyc nazwisko " + title + ".\n");
   if(objectp(find_player(imie)))
      find_player(imie)->catch_msg(QCIMIE(TP, PL_MIA) + " nadaje Ci nazwisko: " + title + ".\n");
   return 1;
}
int
snadaj(string str)
{
   string *text, imie, title = "";
   int    i;
   if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
   NF("Komu i jaki chcesz nadac przydomek?\n");
   if(!str) return 0;
   text = explode(str, " ");
   if(sizeof(text) < 2) return 0;
   imie = text[0];
   NF(capitalize(imie) + " nie nalezy do Klanu Tygrysa!\n");
   if(!SILNIK->query_czlonek(imie)) return 0;
   NF(capitalize(imie) + " nie jest jeszcze samurajem!\n");
   if(SILNIK->query_ranga(imie) == APPLICANT) return 0;
   for(i=1; i<sizeof(text); i++)
   {
      title = title + text[i];
      if(i != (sizeof(text)-1)) title = title + " ";
   }
   SILNIK->set_przydomek(imie, title);
   TP->catch_msg("Od teraz " + capitalize(imie) + " wsrod Klanu Tygrysa bedzie sie nazywac " + title + ".\n");
   if(objectp(find_player(imie)))
      find_player(imie)->catch_msg(QCIMIE(TP, PL_MIA) + " nadaje Ci przydomek: " + title + ".\n");
   return 1;
}
int
smianuj(string str)
{
	object *cel;
	int i;
	if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
	cel = parse_this(str, "%l:" + PL_BIE + " 'doradca'");
	NF("Kogo chcesz mianowac doradca?\n");
	if(!sizeof(cel) || sizeof(cel) > 1) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " nie jest samurajem.\n");
	if(!SILNIK->query_czlonek(cel[0]->query_real_name())) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " jest juz twoim doradca.\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == HATAMOTO) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " nie nalezy jeszcze do Klanu Tygrysa.\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == APPLICANT) return 0;
	if(SILNIK->set_hatamoto(cel[0]->query_real_name()))
	{
		TP->catch_msg("Mianujesz " + QIMIE(cel[0], PL_BIE) + " nadajac mu funkcje Hatamoto Klanu Tygrysa.\n");
		cel[0]->catch_msg(QCIMIE(TP, PL_MIA) + " mianuje Cie Hatamoto Klanu Tygrysa, czujesz sie wyrozniony.\n");
		return 1;
	}
	NF("Cos sie spierdolilo.\n");
	return 0;
}
int
susun(string str)
{
	int i;
	if(SILNIK->query_ranga(TP->query_real_name()) != DAIMYO) return 0;
	NF("Kogo chcesz usunac z funkcji Hatamoto?\n");
	if(!strlen(str)) return 0;
	NF("Nie jest samurajem z Klanu Tygrysa.\n");
	if(!SILNIK->query_czlonek(str)) return 0;
	NF(capitalize(str) + " nie jest Hatamoto Klanu Tygrysa!\n");
	if(SILNIK->query_ranga(str) != HATAMOTO) return 0;
	SILNIK->set_data(str, KLAN_RANGA, REGULAR);
    TP->catch_msg("Usuwasz " + capitalize(str) + " z funkcji Hatamoto Klanu Tygrysa.\n");
    if(objectp(find_player(str)))
       find_player(str)->catch_msg(QCIMIE(TP, PL_MIA) + " usunal Cie z funkcji Hatamoto Klanu Tygrysa.\n");
	return 1;
}
int
spoprzyj(string str)
{
	object *cel;
	cel = parse_this(str, "%l:" + PL_BIE);
	if(SILNIK->query_ranga(TP->query_real_name()) != HATAMOTO) return 0;
	NF("Kogo chcesz poprzec?\n");
	if(!sizeof(cel) || sizeof(cel) > 1) return 0;
	if(!SILNIK->query_czlonek(cel[0]->query_real_name())) SILNIK->new_applicant(cel[0]->query_real_name());
	NF(capitalize(cel[0]->query_real_name()) + " zostal wyrzucony z Klanu Tygrysa wiec nie mozesz go poprzec.\n");
	if(SILNIK->query_banished(cel[0]->query_real_name())) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " juz jest samurajem i nie potrzebuje twojego poparcia.\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == REGULAR) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " jest Hatamoto Klanu Tygrysa wiec po co chcesz go popierac?\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == HATAMOTO) return 0;
	NF(capitalize(cel[0]->query_real_name()) + " jest Daimyo Klanu Tygrysa wiec po co chcesz go popierac?\n");
	if(SILNIK->query_ranga(cel[0]->query_real_name()) == DAIMYO) return 0;
	NF("Ma juz twoje poparcie.\n");
	if(!SILNIK->add_poparcie(cel[0]->query_real_name(), TP->query_real_name())) return 0;
	TP->catch_msg("Udzielasz " + QIMIE(cel[0], PL_CEL) + " poparcia dla " + cel[0]->koncowka("jego", "jej") +
	              " kandydatury do Klanu Tygrysa.\n");
	cel[0]->catch_msg("Zostal" + cel[0]->koncowka("es", "as") + " popart" + cel[0]->koncowka("y", "a") +
	                  " przez " + QIMIE(TP, PL_MIA) + " w twych staraniach do Klanu Tygrysa.\n");
	return 1;
}
// Emoty:
int
spomoc(string str)
{
	TP->catch_msg("Komendy dostepne dla samurajow:\n" +
	              "Emoty:\n"+
	              "sklnij, sm, sokrzyk, spokaz, spoleruj, spowitaj, spozegnaj, ssplun, supomnij, susmiechnij, szasmiej, szlosc.\n"+
	              "Inne komendy:\n"+
	              "slista, srezygnuj.\n");
	if(SILNIK->query_ranga(TP->query_real_name()) == DAIMYO)
	   TP->catch_msg("Komendy Daimyo:\n"+
	                 "smianuj, susun, snadaj, snazwisko, szabierz, swrecz, swywal.\n");
	if(SILNIK->query_ranga(TP->query_real_name()) == HATAMOTO)
	   TP->catch_msg("Komendy Hatamoto:\n"+
	                 "spoprzyj.\n");
	TP->catch_msg("Specjale:\n"+
	              "scios, spiesn, smlynkuj\n");
    TP->catch_msg("Dla starszych posiadajacych duza wiedze samuraji dostepne rowniez:\n"+
                  "szamien, szion.\n");
	return 1;
}
int
sklnij(string str)
{
	TP->catch_msg("Mruczysz gniewnie i klniesz tak, ze wszyscy dookola zatykaja uszy.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " mruczy gniewnie i klnie po "+
	          "krasnoludzku tak, ze wszyscy dookola, nawet Ty zatykaja uszy.\n", ({ TP }));
	return 1;
}
void
show_text(object kto, string text)
{
	if(kto->query_guild_name_occ() == GUILD_NAZWA)
	   kto->catch_msg(QCIMIE(TP,PL_MIA) + " mowi z jezyku Klanu Tygrysa: " + text + "\n");
	else
	   kto->catch_msg(QCIMIE(TP, PL_MIA) + " wydaje z siebie dziwne dzwieki o niezwykle szybkiej czestosci, udaje Ci sie wylowic kilka slow...ping yamato dzenk...czy to ma jakis sens?\n");
}
int
sm(string str)
{
   object *gracze;
   int i;
   TP->catch_msg("W tajnym jezyku Klanu Tygrysa mowisz: " + str + "\n");
   gracze = FILTER_LIVE(all_inventory(environment(TP))) - ({ TP });
   for (i = 0; i < sizeof(gracze); i++)
       show_text(gracze[i], str);
   return 1;
}
int
sokrzyk(string str)
{
	TP->catch_msg("Wydajesz z siebie dziki okrzyk rozchadzacy sie daleko w powietrzu.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " wydaje z siebie przerazliwy okrzyk paralizujacy niemal okolice.\n", ({ TP }));
	return 1;
}
int
spokaz(string str)
{
	object *cel;
	cel = parse_this(str,"'gest' %l:"+PL_CEL);
	NF("Komu chcesz pokazac gest?\n");
	if(!sizeof(cel)) return 0;
	TP->catch_msg("Wyrazasz swa dezaprobate wobec " + QIMIE(cel[0], PL_BIE) + ", demonstrujac jeden ze swych ulubionych gestow - piesc ze sztywno wyprostowanym w gore srodkowym palcem...\n");
	cel[0]->catch_msg(QCIMIE(TP, PL_MIA) + " wyraza swa dezaprobate wobec Ciebie, demonstrujac jeden ze swych ulubionych gestow - piesc ze sztywno wyprostowanym w gore srodkowym palcem...\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " wyraza swa dezaprobate wobec " + QIMIE(cel[0], PL_DOP) +
	          ", demonstrujac jeden ze swych ulubionych gestow - piesc ze sztywno wyprostowanym w gore srodkowym palcem...\n", ({ cel[0], TP }));
	return 1;
}
int
spoleruj(string str)
{
	TP->catch_msg("Z zadziwiajacym pietyzmem polerujesz swoja bron rabkiem rekawa, powodujac, iz blyszczy jak nigdy wczesniej. "+
	              "Stwierdziwszy, ze wyglada nalezycie przypinasz ja na powrot we wlasciwe miejsce, prezac sie dumnie.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " z zadziwiajacym pietyzmem poleruje swoja bron rabkiem rekawa, "+
	              "powodujac, iz blyszczy jak nigdy wczesniej. Stwierdziwszy, ze wyglada nalezycie przypina ja na "+
	              "powrot we wlasciwe miejsce, prezac sie dumnie.\n", ({ TP }));
    return 1;
}
int
spowitaj(string str)
{
	object *cel;
	cel = parse_this(str, "%l:" + PL_BIE);
	NF("Kogo chcesz powitac?\n");
	if(!sizeof(cel)) return 0;
	TP->catch_msg("Witasz uroczyscie " + QIMIE(cel[0], PL_BIE) + ", pokazujac swe zeby w oszczednym usmiechu wojownika, "+
	              "ktory nawet w zamecie bitwy potrafi rozpoznac przyjaciela.\n");
	cel[0]->catch_msg(QCIMIE(TP, PL_MIA) + " wita Cie uroczyscie, pokazujac swe zeby w oszczednym usmiechu wojownika, "+
	              "ktory nawet w zamecie bitwy potrafi rozpoznac przyjaciela.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " wita uroczyscie " + QIMIE(cel[0], PL_BIE) +
	              ", pokazujac swe zeby w oszczednym usmiechu wojownika, ktory nawet w zamecie "+
	              "bitwy potrafi rozpoznac przyjaciela.\n", ({ TP, cel[0] }));
	return 1;
}
int
spozegnaj(string str)
{
	object *cel;
	cel = parse_this(str, "%l:" + PL_BIE);
	NF("Kogo chcesz pozegnac?\n");
	if(!sizeof(cel)) return 0;
	TP->catch_msg("Zegnasz uroczyscie " + QIMIE(cel[0], PL_BIE) + " slowami - Oby Twoj orez nigdy nie zlamal sie na klindze wroga, oraz by niepokryl sie krwista rdza z ran Twych przyjaciol.\n");
	cel[0]->catch_msg(QCIMIE(TP, PL_MIA) + " zegna Cie uroczyscie slowami - Oby Twoj orez nigdy nie zlamal sie na klindze wroga, oraz by niepokryl sie krwista rdza z ran Twych przyjaciol.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " zegna uroczyscie " + QIMIE(cel[0], PL_BIE) +
	              " slowami - Oby Twoj orez nigdy nie zlamal sie na klindze wroga, oraz by niepokryl sie krwista rdza z ran Twych przyjaciol.\n", ({TP, cel[0]}));
	return 1;
}
int
ssplun(string str)
{
	TP->catch_msg("Wykrzywiasz sie, wywiesiwszy jezyk i strzykasz slina na spora odleglosc.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " wykrzywia sie, wywiesiwszy jezyk i strzyka slina na spora odleglosc.\n", ({ TP}) );
	return 1;
}
int
supomnij(string str)
{
	object *cel;
	cel = parse_this(str, "%l:" + PL_BIE);
	NF("Kogo chcesz upomniec?\n");
	if(!sizeof(cel)) return 0;
	TP->catch_msg("Spogladasz na " + QIMIE(cel[0], PL_BIE) + ", po czym nagle doskakujesz i wymierzasz " +
	              cel[0]->koncowka("mu","jej") + " potezny cios swa piescia prosto w twarz, przywolujac tym samym do porzadku.\n");
    cel[0]->catch_msg(QCIMIE(TP, PL_MIA) + " spoglada na Ciebie, po czym nagle doskakuje i wymierza Ci potezny cios "+
                  "piescia prosto w twarz, przywolujac tym samym do porzadku.\n");
    tell_room(QCIMIE(TP, PL_MIA) + " spoglada na " + QIMIE(cel[0], PL_BIE) + ", po czym nagle doskakuje i wymierza " +
                  cel[0]->koncowka("mu","jej") + " potezny cios piescia prosto w twarz, przywolujac tym samym do porzadku.\n", ({ cel[0], TP}));
    return 1;
}
int
susmiechnij(string str)
{
	TP->catch_msg("Usmiechasz sie z niesamowitym blyskiem w zmeczonych wojowaniem oczach.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " usmiecha sie z niesamowitym blyskiem w zmeczonych wojowaniem oczach.\n", ({ TP }));
	return 1;
}
int
szasmiej(string str)
{
	TP->catch_msg("Trzymajac sie za boki wybuchasz gromkim, zarazliwym smiechem, ktorego echo roznosi sie po okolicy.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " trzymajac sie za boki wybucha gromkim, zarazliwym smiechem, ktorego echo roznosi sie po okolicy.\n", ({ TP }));
	return 1;
}
int
szlosc(string str)
{
	TP->catch_msg("Klniesz, zrywasz z glowy helm i grzmocisz nim o ziemie dajac upust swej zlosci. Oczy masz dzikie, przekrwione, straszne.\n");
	tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " klnie, zrywa z glowy helm i grzmoci nim o ziemie dajac upust swej zlosci. Oczy ma dzikie, przekrwione, straszne.\n", ({ TP }));
	return 1;
}
int
slista(string str)
{
	string *imiona;
	int i;
	imiona = SILNIK->active_members();
	TP->catch_msg("Obecnie w swiecie przebywaja: \n");
	for(i = 0; i<sizeof(imiona); i++)
	   TP->catch_msg(capitalize(imiona[i]) + " " + find_player(imiona[i])->query_guild_title_occ() + ".\n");
	return 1;
}
int
srezygnuj(string str)
{
	if(TP->query_prop("_chce_odejsc_z_samurajow"))
	{
		TP->usun_gildia_occ();
		TP->catch_msg("Przeklinasz po raz drugi swa przynaleznosc do samurajow. Jakby z nikad uderza cie "+
		              "piorun ktory pozbawia cie zycia.\n");
		TP->set_hp(0);
		TP->do_die();
		return 1;
	}
	TP->catch_msg("Przeklinasz swa przynaleznosc do samurajow.. niebo na chwile stalo sie niespokojne. "+
	              "Jeslis pewien swej decyzji, poraz drugi zrezygnuj.\n");
	TP->add_prop("_chce_odejsc_z_samurajow", 1);
	return 1;
}

int
szamien(string str)
{
	string co;
	notify_fail("Szamien sie w smoka/czlowieka?\n");
	if(!str) return 0;
    if (str == "sie w smoka")
    {
		notify_fail("Niestety nie jestes w stanie sie skupic na przemianie..\n");
		if(TP->query_stat(SS_WIS) < 160) return 0;
		notify_fail("Przeciez juz jestes w formie smoka.\n");
		if(TP->query_shape()) return 0;
		notify_fail("Nie dasz rady sie zamienic w smoka..\n");
		if(TP->query_prop("_live_i_przemiana")) return 0;
		TP->command("odloz wszystkie zbroje");
		TP->command("odloz bronie");
		TP->set_shape(1);
		TP->change_shape();
		TP->catch_msg("Potrzebuje opisu przemiany w smoka. Jak cos wymyslice "+
		              "to wyslac listem.\n");
		TP->add_prop(LIVE_I_NEVERKNOWN, 1);
		TP->set_attackuse(300);
		TP->set_hp(30000);
		TP->add_prop("_live_i_przemiana", 1);
		return 1;
	}
	else if(str == "sie w czlowieka")
	{
		notify_fail("Niestety nie jestes w stanie sie skupic na przemianie..\n");
		if(TP->query_stat(SS_WIS) < 160) return 0;

		notify_fail("Przeciez jestes w formie czlowieka..\n");
		if(!TP->query_shape()) return 0;
		TP->set_shape(0);
		TP->change_shape();
		TP->remove_prop(LIVE_I_NEVERKNOWN);
		TP->catch_msg("Potrzebuje opisu przemiany w czlowieka. Jak cos wymyslice "+
		              "to wyslac listem.\n");
		TP->set_attackuse(0);
		TP->set_hp(TP->query_max_hp());
		return 1;
	}
	else return 0;

}

void
zioniecie_reload(object player)
{
	player->set_cios(0);
	player->catch_msg("Jestes w stanie zionac ponownie.\n");

}

int
szion(string str)
{
	object wrog;
	object paraliz;
	if(!TP->query_shape()) return 0;
	notify_fail("Musisz z kims walczyc by zionac z paszczy..\n");
	if(!TP->query_attack()) return 0;
	notify_fail("Nie jestes w stanie zionac ponownie..\n");
	if(TP->query_cios()) return 0;
	notify_fail("Jestes zbyt zmeczony mentalnie by zionac na wroga.\n");
	if(TP->query_mana() < 51) return 0;
	TP->add_mana(-50);

	wrog = TP->query_attack();

	TP->catch_msg("Nabierasz glebokki oddech w pluca i z calych sil plujesz "+
	              "powietrzem w " + QIMIE(wrog, PL_BIE) + " a chlod staje sie "+
	              wrog->koncowka("go", "ja") + " zamrozic na jakis czas!\n");
    wrog->catch_msg(QCIMIE(TP, PL_MIA) + " nabiera gleboki oddech i pluje w "+
                  "w ciebie mroznym powietrzem! Twa skora twardnieje z zimna "+
                  "i nie jestes w stanie sie ruszyc!\n");
    tell_room(environment(TP), QCIMIE(TP, PL_MIA) + " nabiera gleboki oddech w "+
                  "w pluca i z calych sil pluje w " + QIMIE(wrog, PL_BIE) +
                  " zamrazajac go na jakis czas mroznym oddechem!\n", ({ wrog, TP }));
    wrog->add_stun();
    setuid();
    seteuid(getuid());
    paraliz = clone_object(PATH + "obj/frozen");
    paraliz->move(wrog);
    TP->set_cios(2);
	set_alarm(60.0, 0.0, &zioniecie_reload(TP));
	return 1;
}
