int ofiaruj(string str) 
{
    object *oblist;
    notify_fail("Co chcesz zaofiarowac? Swoje uslugi?\n");
    if(!str) return 0;
    if (!wildmatch("swoje uslugi*",str) && !wildmatch("swoja sluzbe*",str)) 
                return 0;
   
    oblist = parse_this (str, "[swoje] / [swoja] [uslugi] / [sluzbe] %l:"+PL_CEL);
   
    if(sizeof(oblist) > 1) return notify_fail("Komu dokladnie chcesz zaofiarowac swoje uslugi?\n");
        if (!sizeof(oblist)) return notify_fail("Komu chcesz zaofiarowac swoje uslugi?\n");
    target("przykleka na jedno kolano, ofiarowujac ci swoja sluzbe.",oblist);
    all2act("przykleka na jedno kolano, ofiarowujac",oblist,PL_CEL," swoja sluzbe.");
    actor("Przyklekasz na jedno kolano, ofiarowujac swoja sluzbe",oblist,PL_CEL);
    return 1;
}

int
wznies(string str)
{       
    string opis;
    mixed *oblist;
    object miecz;
        if (str==0)
        {       
                notify_fail("Co chcesz wzniesc?\n");
                return 0;
        }

    parse_command(str,TP,"%i:"+PL_BIE,oblist);
    oblist=NORMAL_ACCESS(oblist,0,0);
    
    if (!sizeof(oblist))
    {
        notify_fail("Co chcesz wzniesc?\n");
        return 0;
    }
    
    if (sizeof(oblist) > 1)
    {
        write("Mozesz wzniesc tylko jedna rzecz naraz.\n");
        return 1;
    }
    
    miecz = oblist[0];
    
    TP->set_obiekty_zaimkow(({miecz}));
    if (!miecz)
    {
        notify_fail("Co chcesz wzniesc?\n");
        return 0;
    }
    
    if (!(miecz->query_wt() == W_SWORD || miecz->query_wt() == W_WARHAMMER)) 
        {
            notify_fail("Wzniesc mozesz tylko miecz lub mlot.\n");
            return 0;
        }
    opis=miecz->koncowka("","a")+" "+miecz->short(this_player(),PL_BIE);
    allbb("podnosi swoj" + opis + " do gory, a na "+this_player()->koncowka("jego","jej")+
      " twarzy wykwita usmiech.");
    write("Unosisz swoj" + opis + " do gory, tak jak uczynil to Sigmar przed ostateczna "+
       "walka z silami Chaosu.\n");
    return 1;
}

int
modl(string str)
{
    string opis;
    object miecz,*bronie;
    int *i,n;
    if (str!="sie")
    {
        notify_fail("Chyba rzmodl sie?\n");
        return 0;
    }
    miecz=(this_player()->query_weapon(W_RIGHT) || 
        this_player()->query_weapon(W_LEFT) || this_player()->query_weapon(W_BOTH));
    if (!miecz || (miecz->query_wt() != W_SWORD && miecz->query_wt() != W_WARHAMMER)) 
        {
            notify_fail("Musisz miec dobyty miecz lub mlot, aby moc to zrobic.\n");
            return 0;
        }
    opis = miecz->short(PL_MIE);
    allbb("przykleka i opierajac sie na " + opis +
          ", wznosi oczy ku gorze, proszac Sigmara o blogoslawienstwo.");
    write("Przyklekasz i opierajac sie na " + opis +
          ", wznosisz oczy ku gorze, proszac Sigmara o blogoslawienstwo.\n");
    TP->add_prop(LIVE_S_EXTRA_SHORT, "kleczacy i opierajacy sie na "+opis+", pograzony w modlitwie do Sigmara");
    TP->add_prop(LIVE_S_SOULEXTRA, "Kleczy i opierajac sie na "+opis+" zanosi modly do Sigmara.\n");
    clone_object(ENGINE+"paraliz_modlitwa")->move(TP);
    
    return 1;
}

int
spoliczkuj(string str)
{
    object *oblist;
    
    oblist = parse_this (str, "%l:"+PL_BIE);
    if(sizeof(oblist) !=0)
        {
            target("z pogarda wymierza ci siarczysty policzek.",oblist);
            actor("Z pogarda wymierzasz",
                  oblist,PL_CEL," siarczysty policzek.");
            all2actbb("z pogarda wymierza",oblist,PL_CEL," siarczysty policzek.");
            return 1;
        }
    notify_fail("Rzspoliczkuj kogo?\n");
    return 0;
}
        
        
int
przeklnij(string str)
{
    object *oblist;
    int licz;
    string konc;

    oblist=parse_this (str,"%l:"+PL_BIE);
    if (sizeof(oblist) > 1) 
        return notify_fail("Kogo dokladnie chcesz przeklac?\n");
        
    if (sizeof(oblist))
    {
            target("lekko odchyla glowe do gory, cichym glosem wzywajac Sigmara, "
               +"zas reka oskarzycielsko wskazuje na ciebie. Jego glos wzmaga"
               +" sie, a po chwili przenosi wzrok na twoja osobe, pod ciezarem"
               +" ktorego nie probujesz sie nawet ruszyc z miejsca. Jego slowa,"
               +" niczym bicz, smagaja powietrze, a ich moc wtlacza w ciebie cala"
               +" twa pewnosc siebie. Czujesz wzmagajaca sie w twoim sercu"
               +" chec ucieczki, lecz slowa zalewaja twe wnetrze niczym"
               +" roztopiony olow...",oblist);
                
            konc=oblist[0]->koncowka("Jego","Jej");                 

            all2act("patrzac na",oblist,PL_BIE," wypowiada mocnym glosem"
                        +" slowa klatwy, tnace powietrze niczym miecz z najprzedniejszej"
                        +" stali.");
            actor("Patrzysz na",oblist,PL_BIE," szepczac slowa przeklenstwa. "+
                  konc + " twarz blednie i dopiero po chwili odzyskuje swa zwykla barwe.");
            return 1;
    }
        
    notify_fail("Kogo chcesz przeklac?\n");
    return 0;
}

int
salutuj(string str)
{
    mixed oblist, bronie;
    object bron;
    string czym, konc;
    
    if (!strlen(str))
    {
        allbb("podnosi dlon do czola w honorowym gescie salutu.");
        write("Podnosisz dlon do czola w honorowym gescie salutu.\n");
        
        return 1;
    }

    if (!parse_command(str, environment(TP), "%l:" + PL_CEL + " %s", oblist, czym))
    {
        notify_fail("Komu chcesz zasalutowac?\n");
        return 0;
    }
    
    oblist = NORMAL_ACCESS(oblist, 0, 0);
    if (!sizeof(oblist))
    {
        notify_fail("Komu chcesz zasalutowac?\n");
        return 0;
    }
        
    if (strlen(czym))
    {
        notify_fail("Czym chcesz zasalutowac?\n");
        
        if (!parse_command(czym, TP, "%i:" + PL_NAR, bronie))
            return 0;
        
        bronie = NORMAL_ACCESS(bronie, 0, 0);
    
        if (!sizeof(bronie))
            return 0;
    
        if (sizeof(bronie) > 1)
        {
            write("Mozesz zasalutowac tylko jedna rzecz naraz.\n");
            return 1;
        }
    
        bron = bronie[0];
    }
    
    TP->set_obiekty_zaimkow(oblist, bronie);
    
    if (bron)
    {
        konc = bron->koncowka("nym","na");
        czym = bron->short(PL_NAR);
        target("salutuje ci podniesio"+konc+" do gory "+czym+".",oblist);
        actor("Salutujesz",oblist,PL_CEL," podniesio"+konc+" do gory "+czym+".");
        all2actbb("salutuje",oblist,PL_CEL," podniesio"+konc+" do gory "+czym+".");
    }
    else
    {
        target("salutuje ci, podnoszac dlon do czola.",oblist);
        actor("Salutujesz",oblist,PL_CEL);
        all2actbb("salutuje",oblist,PL_CEL," podniesiona do czola dlonia.");
    }
    
    return 1;
}

int
rzsmiech(string str)
{
    all("unosi glowe i wybucha zimnym, mrozacym krew w zylach "
        +"smiechem.");
    write("Unosisz glowe i wybuchasz zimnym, mrozacym krew w zylach "
          +"smiechem.\n");
    return 1;
}

int
rzgorze(string str)
{
    if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
    all("wykrzywia twarz w przerazliwym grymasie i strasznym glosem krzyczy: Gorze!");
    write("Wykrzywiasz twarz w przerazliwym grymasie i strasznym glosem krzyczysz: Gorze!\n");
    return 1;
}

int
rzszyk(string str)
{
	object *druzyna;
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
	if (!(druzyna=TP->query_team_others()))	
		return notify_fail("Nie jestes czlonkiem druzyny.\n");
	all2act("zajmuje swoje miejsce w szyku wsrod",druzyna,PL_DOP);
	target("zajmuje kolo ciebie miejsce w szyku.",druzyna);
	actor("Zajmujesz miejsce w szyku miedzy", druzyna, PL_DOP);
	return 1;
}

int
rzpostawa(string str)
{
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
	all("przyjmuje postawe bojowa, gotow do blyskawicznego rozpoczecia walki.");
	write("Przyjmujesz postawe bojowa, przygotowujac sie do blyskawicznego rozpoczecia walki.\n");
	return 1;
}

int
rzatak(string str)
{
	object *kogo;
	mixed no_attack;
	if (!str)
	{
		all("przygotowywuje sie do ataku.");
		write("Przygotowywujesz sie do ataku.\n");
		return 1;
	}
	kogo=parse_this(str,"%l:"+PL_BIE);
	if (!sizeof(kogo))
		return notify_fail("Kogo chcesz zaatakowac?\n");
	if (sizeof(kogo)>1)
		return notify_fail("Kogo dokladnie chcesz zaatakowac?\n");
	if (!F_DARE_ATTACK(TP, kogo[0]))
		return notify_fail("Nie odwazysz sie na to.\n");
	no_attack=kogo[0]->query_prop(OBJ_M_NO_ATTACK);
	if (!no_attack) no_attack=environment(TP)->query_prop(ROOM_M_NO_ATTACK);
	if (no_attack)
	{
		if (stringp(no_attack))
			write(no_attack);
		else write("Nie mozesz zaatakowac "+kogo[0]->query_imie(TP, PL_BIE)+"\n");
		return 1;
	}
	all2act("z imieniem Sigmara na ustach atakuje na",kogo, PL_BIE);
	target("z imieniem Sigmara na ustach atakuje cie!", target);
	actor("Z imieniem Sigmara na ustach atakujesz", kogo, PL_BIE);
	return 1;
}

rzobrona(string str)
{
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
	all("przyjmuje postawe obronna, gotow do odparcia ewentualnego ataku.");
	write("Przyjmujesz postawe obronna, gotow do odparcia ewentualnego ataku.");
	return 1;
}

rzznakatak(strin str)
{	
	object kogo;
	if (!str)
	{
		all("unosi reke do gory, wskazujac cel ataku.");
		write("Unosisz reke do gory, wskazujac cel ataku.\n");
		return 1;
	}
	kogo = parse_this(str, "%l:"+PL_BIE);
	if (!sizeof(kogo))
		return notify_fail("Kogo chcesz wskazac jako cel ataku?\n");
	all2act("unosi reke do gory, wskazujac",kogo, PL_BIE," jako cel ataku.");
	target("unosi reke do gory, wskazujac cie jako cel ataku.", kogo);
	actor("Unosisz reke do gory, wskazujac",kogo,PL_BIE," jako cel ataku.");
	return 1;
}

int
rzspojrz(string str)
{
    object *oblist;

        if (!str)
        {
                allbb("taksuje wszystkich wzrokiem spod polprzymknietych powiek. Czujesz, "
                        +"jak przechodzi cie dreszcz strachu.");
        write("Taksujesz wszystkich wzrokiem.\n");
        return 1;
    }
    oblist = parse_this (str,"[na] %l:"+PL_BIE);

    if(sizeof(oblist)!=0)
        {
            string konc;
            int licz;
            if (sizeof(oblist)>1)
            {
                notify_fail("Na kogo dokladnie chcesz spojrzec?\n");
                return 0;
            }
            target(" powoli podnosi wzrok."+
               " Jego spojrzenie wwierca sie w ciebie niczym ostrze sztyletu."+
               " Wydaje ci sie, ze trwa to cala wiecznosc.",oblist);
            actor("Patrzysz na",oblist,PL_BIE," spod przymknietych powiek.");
                konc = oblist[0]->koncowka("go","ja");
            all2actbb("patrzy na", oblist, PL_BIE," spod przymknietych powiek. Widzisz, "
                      +"jak przechodzi "+ konc  + " dreszcz strachu.");
            return 1;
        }
        notify_fail("Rzspojrz na kogo?\n");
        return 0;
}

int
rzuscisnij(string str)
{
    object *oblist;
    oblist = parse_this (str,"%l:"+PL_BIE);
    if(sizeof(oblist)!=0)
        {
            notify_fail("Przeciez to nie jest Rycerz Zakonny!\n");

            if (!PRAWA->sprawdz_prawa(PRAWA_BRATA, oblist[0]))
                return 0;
            target("wymienia z toba braterski uscisk.",oblist);
            all2act("wymienia z",oblist,PL_NAR," braterski uscisk.");
            actor("Wymieniasz z",oblist,PL_NAR," braterski uscisk.");
            return 1;
        }
    notify_fail("Kogo chcesz usciskac?\n");
    return 0;
}



int
odpowiedz(string str)
{
    object *oblist;

        if (!str || !wildmatch("*na obraze*",str))
        {
                notify_fail("Na co chcesz odpowiedziec? Na obraze?\n");
                return 0;
    }
    oblist = parse_this (str,"[na] [obraze] %l:"+PL_DOP+" [na] [obraze]");

    if(!sizeof(oblist))
    {
        write("Czujesz, jak nagromadzona w tobie zlosc szuka ujscia, a reka"
                +" sama rusza w poszukiwaniu broni.\n");
        allbb("maca reka w poszukiwaniu broni, a jego oczy zaczynaja plonac.");
        return 1;
    }
    if (sizeof(oblist)>1)
    {
        notify_fail("Na czyja obraze chcesz odpowiedziec?\n");
        return 0;
    }
        target("z kamienna twarza robi krok w twoja strone. Jego oczy plona"
                +" przez moment szalenczym blaskiem, a reka "
                +" szuka broni.",oblist);
    actor("Z kamienna mina robisz krok w kierunku",oblist,PL_DOP,", a twoja"
        +" reka sama szuka broni.");
    all2actbb("z kamienna twarza robi krok w kierunku", oblist, PL_DOP,", a"
        +" jego reka szuka broni.");
    return 1;
}


/* trzeba blogoslawienstwo... */


int
zamysl(string str)
{
    string opis,opis1;
    if (TP->query_subloc_obj(PLASZCZ_SUBLOC))
    {
        opis="owija sie plaszczem, spogladajac przed siebie. "
           +"Na jego twarzy maluje sie zaciecie, i upor, typowe dla"
           +" Rycerzy Sigmara.";
        opis1="Owijasz sie plaszczem, i zamyslasz sie...\n";
        }
        else
        {
                opis="spoglada przed siebie, a na jego twarzy maluje sie"
                        +" zaciecie i upor, typowe dla Rycerzy Sigmara.";
                opis1="Zamyslasz sie...\n";
        }
    if (str!="sie") return notify_fail("Chyba rzzamysl sie?\n");
        
    all(opis);
    write(opis1);
    return 1;
}
 
 
int
pozdrow(string str)
{
        object *oblist;
        if (!str)
        {
                all("wznosi reke w starym rycerskim gescie pozdrowienia.");
                write("Wznosisz reke w starym rycerskim gescie pozdrowienia.\n");
                return 1;
        }
        oblist=parse_this(str,"%l:"+PL_BIE);
        if (!sizeof(oblist)) return notify_fail("Kogo chcesz pozdrowic?\n");
        all2act("wznosi reke w kierunku",oblist,PL_DOP," w starym, rycerskim gescie pozdrowienia.");
        target("wznosi reke w twoim kierunku w starym, rycerskim gescie pozdrowienia.",oblist);
        actor("Wznosisz reke w kierunku",oblist,PL_DOP," w starym, rycerskim gescie pozdrowienia.");
        return 1;
}

int
uklon(string str)
{
        object *oblist;
        string jak,tmp;
        if (!str) return notify_fail("Chyba rzuklon sie?\n");
        sscanf(str,"sie %s",str);
        if (!str)
        {
                all("pochyla glowe w lekkim, ale pelnym szacunku uklonie.");
                write("Pochylasz glowe w lekkim, ale pelnym szacunku uklonie.\n");
                return 1;
        }
        oblist=parse_this(str,"[lekko] / [gleboko] %l:"+PL_CEL);
        if (!sizeof(oblist))
        {
                if (!wildmatch("gleboko*",str))
                {
                        all("pochyla glowe w lekkim, ale pelnym szacunku uklonie.");
                        write("Pochylasz glowe w lekkim, ale pelnym szacunku uklonie.\n");
                        return 1;
                }
                all("pochyla sie gleboko w pelnym szacunku uklonie.");
                write("Pochylasz sie gleboko w pelnym szacunku uklonie.\n");
                return 1;
                
        }
        if (!wildmatch("gleboko*",str))
        {
                all2act("pochyla glowe przed",oblist,PL_NAR," w lekkim, ale pelnym szacunku uklonie.");
                actor("Pochylasz glowe przed",oblist,PL_NAR," w lekkim, ale pelnym szacunku uklonie.");
                target("pochyla przed toba glowe w lekkim, ale pelnym szacunku uklonie.",oblist);
                return 1;
        }
        all2act("pochyla sie gleboko przed",oblist,PL_NAR," w pelnym szacunku uklonie.");
        actor("Pochylasz sie gleboko przed",oblist,PL_NAR," w pelnym szacunku uklonie.");
        target("pochyla sie gleboko przed toba w pelnym szacunku uklonie.",oblist);
        return 1;
}       

int  
sam_zaslon(string str)
{
        object kogo, *gracze;
        string wrog;
        if (!str) return notify_fail("Kogo chcesz zaslonic?\n");
        gracze=parse_this(str,"%l:"+PL_BIE);
        if (!(sizeof(gracze)==1)) return notify_fail("Kogo chcesz zaslonic?\n");
        kogo=gracze[0];
        gracze=kogo->query_enemy(-1);
        if (!sizeof(gracze)) return notify_fail("Przeciez " + 
                kogo->query_zaimek(PL_MIA) +" z nikim nie walczy!\n");
        wrog=(sizeof(gracze)>1) ? "przeciwnikow":gracze[0]->short(PL_DOP);
        actor("Zrecznie zaslaniasz",({kogo}),PL_BIE," przed ciosami "+wrog+" przejmujac je na siebie.");
        tell_room(environment(TP),QCIMIE(TP,PL_MIA)+" zrecznie zaslania "+QIMIE(TP,PL_BIE) +" przed ciosami "+wrog+".\n",({TP,kogo})+gracze);
        target("zrecznie wskakuje miedzy ciebie a "+QIMIE(kogo,PL_BIE)+", zaslaniajac "+kogo->query_zaimek(PL_BIE)+" przed twoimi ciosami.",gracze);    
        target("zrecznie cie zaslania przed ciosami "+wrog,({kogo}));
        gracze->attack_object(TP);
        return 1;
}       

