inherit "/cmd/std/command_driver";
#include <filter_funs.h>
#include <composite.h>
#include "dhor.h"

init_emoty()
{
	add_action("spojrzenie","gspojrz");
	add_action("modlitwa1","gmodl");
	add_action("usmiechnij","gusmiech");
	add_action("pozdrow","gpozdrow");	
	add_action("zacisnij","gzacisnij");
	add_action("zmierz","gzmierz");
	add_action("uderz","guderz");
	add_action("atak","gatak");
	add_action("zamysl","gzamysl");
	add_action("czesc","gczesc");
	add_action("szepcz","gszepcz");
	add_action("pomoc","ghistoria");
	add_action("pomoc2","gkomendy");
}

int spojrzenie(string str)
{
        if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
                write("Unosisz swoj wzrok.\n");
                all("unosi swoj wzrok, a w jego spojrzeniu zauwazasz hard, upor i madrosc "+
                "rasy ktora zdobyla najwyzsze szczyty i najglebsze czelusci tego "+
                "swiata. ");
                return 1;
}
                                
int modlitwa1(string str)
{
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
		write("Cicha modlitwa oddajesz siebie pod opieke Grungniego.\n");
		all("przystaje na chwile i zaciskajac mocno dlon na kunsztownym "+
		"wisiorze, cicha modlitwa oddaje siebie pod opieke Grungniego. ");                                 
		return 1;
}

int zamysl(string str)
{
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
		write("Pocierasz w roztargnieniu brode, patrzac z zaduma w ziemie. \n");
		all("pociera z roztargnieniem brode, patrzac z zaduma w ziemie. ");                                 
		return 1;
}
int czesc(string str)
{
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
		write("Bierzesz w dlon swoj amulet i mruczac slowa krasnoludzkiej modlitwy oddajesz czesc Grungniemu. \n");
		all("bierze w dlon swoj amulet i mruczac slowa krasnoludzkiej modlitwy oddaje czesc Grungniemu. ");                                 
	return 1;
}
int szepcz(string str)
{
	if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
	write("Kladziesz dlon na swym amulecie czujac niemalze pulsujaca obecnosc Grungniego w tym kawalku "+
	"kruszcu. Prawie nieslyszalnie wypowiadasz slowa modlitwy i podziekowania, kierujac je ku swemu bogu. \n");
	all("kladzie dlon na swym amulecie i przymykajac lekko oczy bezglosnie porusza ustami, wypowiadajac "+
	"slowa zapewne modlitwy. ");                                 
	return 1;
}


int usmiechnij(string str)
{
	object *oblist;
	if (!str)
	{
		write("Nawijajac na palec lancuszek od wisiora, usmiechasz sie lekko sam do siebie.\n");
		all("nawija na palec lancuszek od wisiora i usmiecha sie lekko sam do siebie.");
		return 1;
	}
	oblist = parse_this(str,"'do' %l:"+PL_DOP);
	if (!sizeof(oblist)) return notify_fail("Do kogo chcesz sie usmiechnac ? \n");
	actor("Nawijasz na palec lancuszek od wisiora i usmiechasz sie lekko do",oblist,PL_DOP,".");
	all2act("nawija na palec lancuszek od wisiora i usmiecha sie lekko do",oblist,PL_DOP,".");
	target("nawija na palec lancuszek od wisiora, i usmiecha sie lekko do ciebie.",oblist);
	return 1;
}
int pozdrow(string str)
{
	object *oblist;
	if (!str)
	{
		write("Machasz reka w przyjacielskim powitaniu.\n");
		all("macha reka w przyjacielskim przywitaniu.");
		return 1;
	}
	oblist = parse_this(str,"%l:"+PL_DOP);
	if (!sizeof(oblist)) return notify_fail("Kogo chcesz pozdrowic? \n");
	actor("Smiejac sie donosnie klepiesz",oblist,PL_DOP," w ramie.");
	all2act("smiejac sie donosnie klepie",oblist,PL_DOP," w ramie.");
	target("smiejac sie donosie klepie cie w ramie.",oblist);
	return 1;
}
int zacisnij(string str)
{
        if (str) return notify_fail("Ta komenda nie przyjmuje zadnych argumentow.\n");
                write("Zamykasz w dloni kamienny amulet wspominajac Grungniego i Jego "+
		"dziela. Przez chwile w w Twej glowie rozbrzmiewaja dzwieki uderzajacych "+
		"o skale kilofow i slowa modlitwy ktora nie zmienila sie od setek lat.. "+
		"Potem wszystko cichnie..\n");
                all("zamyka w swej dloni amulet, sciskajac piesc tak mocno "+
		"az bieleja "+TP->koncowka("mu","jej")+"  palce. Po chwili "+TP->koncowka("jego","jej")+ " twarz wypogadza sie, jak gdyby z "+
		"kontaktu z tym zimnym kawalkiem kamienia czerpa"+TP->koncowka("l","la")+ " jakas niezwykla, "+
		"tajemnicza sile. ");
                return 1;
}
int zmierz(string str)
{
	object *oblist;
	if (!str)
	{
		write("Patrzysz przed siebie spojrzeniem przepelnionym nienawiscia.\n");
		all("patrzy przed siebie spojrzeniem przepelnionym nienawiscia.");
		return 1;
	}
	oblist = parse_this(str,"%l:"+PL_DOP);
	if (!sizeof(oblist)) return notify_fail("Kogo chcesz zmierzyc? \n");
	actor("Mierzysz",oblist,PL_DOP," straszliwym, nie wrozacym nic dobrego wzrokiem.");
	all2act("mierzy",oblist,PL_DOP," wzrokiem przepelnionym nienawiscia i pogarda, "+
	"ktora slowami wyrazic nie sposob. ");
	target("spoglada na ciebie a w "+TP->koncowka("jego","jej")+" oczach dostrzegasz tak gleboka "+
	"nienawisc i pogarde, ze zaczynasz czuc sie nieswojo. ",oblist);
	return 1;
}
int uderz(string str)
{
	object *oblist;
	if (!str)
	{
		write("Rozgladasz sie z ponura mina, jakbys mial ochote komus przylozyc.\n");
		all("rozglada sie z ponura mina, jakby mial zamiar komus przylozyc.");
		return 1;
	}
	oblist = parse_this(str,"%l:"+PL_DOP);
	if (!sizeof(oblist)) return notify_fail("Kogo chcesz uderzyc? \n");
	actor("Bierzesz szeroki zamach po czym wymierzasz zaskoczonemu",oblist,PL_CEL," cios "+
	"piescia, mierzac w podbrodek. Przeciwnik zataczaja sie do tylu i bezsilnie opada na ziemie. ");

	all2act("bierze szeroki zamach, a " + TP->koncowka("jego","jej")+" piesc zatacza szeroki "+
	"luk po czym laduje na podbrodku",oblist,PL_DOP," powalajac przeciwnika "+ 
        " na ziemie! "+QCIMIE(TP,PL_MIA)+" rozcierajac dlon usmiecha sie pogardliwie, "+ 
	"a z "+TP->koncowka("jego","jej")+ " postaci emanuje niezmacona niczym pewnosc siebie. ");

	target("bierze szeroki zamach mierzac w ciebie, po czym jego piesc laduje na twojej twarzy. "+
        "Uderzenie jest tak silne, ze tracisz rownowage i przewracasz sie, a przed oczami momentalnie "+
	"pojawia ci sie ciemne niebo z wieloma gwiazdami. ",oblist);
	return 1;
}

int atak(string str)
{
	object *kogo, bron;
	mixed no_attack;
	bron=(TP->query_weapon(W_RIGHT) || TP->query_weapon(W_BOTH) || TP->query_weapon(W_LEFT));
	if (!str)
        {
	if (!bron)
	{
                all("zacierajac rece, przygotowuje sie do ataku.");
                write("Przygotowywujesz sie do ataku.\n");
	}
	else
	{
	all("krecac mlynce "+bron->short(PL_NAR)+", przygotowuje 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 Grungniego na ustach rzuca sie do ataku na",kogo, PL_BIE);
        target("z imieniem Grungniego na ustach rzuca sie na ciebie!", kogo);
        actor("Z imieniem Grungniego na ustach rzucasz sie do ataku na", kogo, PL_BIE);
        TP->attack_object(kogo[0]);
        return 1;

}		
int pomoc(string str)
{
         write("+========Grungni, krasnoludzki bog gornictwa========+\n"+
	"Grungni, ojciec wszystkich gornikow jest glownym bogiem "+
	"krasnoludzkiego panteonu, do czego nie ma watpliwosci zaden "+
 	"krasnolud. W legendach, ktore slyszal"+TP->koncowka("es","las") +" od "+
 	 "swoich dziadkow, a ktore odpowiedzieli im ich dziadkowie, a twoi "+
	"pradziadowie, to wlasnie Grungni przeprowadzil krasnoludy "+
	"od niebezpieczenstw swiata zewnetrznego ku bezpiecznym glebiom "+
	"ziemi i potem zostal obwolany bogiem gornictwa i podziemi. "+
	"Dawniej, gdy bogowie czesciej odwiedziali swiat smiertelnych, "+
	"nieliczni widzieli Grungniego, jak przechodzil starymi korytarzami "+
	"krasnoludzkich podziemi. Byl to krasnolud odziany w kolczuge, z rozwidlona "+
	"stalowoszara broda, siegajaca niemalze do stop. "+
	"Czciciele Grungniego musza przestrzegac tylko dwoch odwiecznych przykazan : "+
	"- Nigdy nie dopuscic, by tunel lub podziemna komnata staly sie niebezpieczne, "+	
	"lub ich ich konstrukcja byla niepewna. "+
	"- Nigdy nie poddawac sie goblinom, lub ich pobratymcom. "+
	"Od wiekow krasnoludy wierza, iz marzeniem Grungniego jest by "+
	"jego wnukowie oddzyskali zajete przez gobliny posiadlosci krasnoludzkie, gdziekolwiek "+
	"jest to mozliwe. "+
	"Kult Grungniego w swiecie zyje w przyjaznych stosunkach z reszta krasnoludzkiego "+
	"panteonu. Malo ma do czynienia z innymi rasami, ale jest wrogo nastawiony do naturalnych "+
	"nieprzyjaciol krasnoludow. Czciciele Grungniego skladaja przysiege, ze nawet za "+
	"cene wlasnego zycia beda bronic dobrego imienia krasnoludzkiej rasy i osiagniec pokolen, "+
	"oraz niszczyc wszelkie przejawy chaosu w krasnoludzkim rodzie. \n"+
	"+========Pojdz i glos chwale wiekow tradycji========+\n");
	return 1;
}

int pomoc2(string str)
{
	write("+============================+\n"+
	"Dostepne komendy dla czcicieli Grungniego : \n"+
	"-gatak [kogo] \n"+
	"-gpozdrow [kogo] \n"+
	"-gzmierz [kogo] \n"+
	"-gspojrz \n"+
	"-gusmiech do [kogo] \n"+
	"-gmodl \n"+
	"-gzacisnij \n"+	
	"-guderz [kogo] \n"+
	"-gzamysl \n"+
	"-gczesc \n"+
	"-gszepcz \n"+
	"-ghistoria \n"+
	"-gkomendy \n"+
	"+============================+\n");

	return 1;
}
