/*
 * Soul Zakonu Rycerskiego Sigmara Mlotodzierzcy
 *
 * Napisal Mithandir
 */

inherit "/cmd/std/command_driver";

#include <tasks.h>
#include "mith.h"
#include "ryc_zak.h"
#include "szarza.h"
#include "ogluszanie.h"
#include "mlot.h"

/* 
#define OBR_BRAK 0 
#define OBR_BLEKKIE 1 
#define OBR_LEKKIE 2
#define OBR_SREDNIE 4
#define OBR_CIEZKIE 8
#define OBR_BCIEZKIE 16    
#define OBR_SMIERTELNE 32
#define DOZWOLONE_BRONIE ({W_SWORD,W_AXE,W_CLUB,W_POLEARM})
*/
 /********************************************************************
  * Soul identifying and autoloading
  ********************************************************************/

string get_soul_id()
{
    return "zakon rycerski";	/* Zgodnie z krotka nazwa gildii. */
}

int query_cmd_soul()
{
    return 1;
}

/***********************************************************************
  * The list of verbs and functions. Please add new in alphabetical order.
  ***********************************************************************/

mapping
query_cmdlist()
{
    return (["mlot":"mlot",
	    "oglusz":"oglusz",
	    "rzofiaruj" : "rzofiaruj",
	    "rzmiecz" : "rzmiecz",
	    "rzmodl" : "rzmodl",
	    "rzspoliczkuj": "rzspoliczkuj",
	    "rzprzeklnij" : "rzprzeklnij",
	    "rzsalutuj" : "rzsalutuj",
	    "rzsmiech" : "rzsmiech",
	    "rzspojrz": "rzspojrz",
	    "rzuscisnij": "rzuscisnij",
	    "szarzuj":"szarzuj"
    ]);
}

/***********************************************************************
 *  Here follows the functions.
 *  New functions should be added in alphabetic order.
 **********************************************************************/
int
rzofiaruj(string str)
{
    object *oblist;
    oblist = parse_this (str, "[na] %l:"+PL_CEL);
    if(sizeof(oblist) != 0)
	{
	    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;
	}
    notify_fail("Komu chcesz ofiarowac swoje uslugi?\n");
    return 0;
}

int
rzmiecz(string str)
{	
    string opis;
    object miecz;
    miecz = this_player()->query_weapon(W_RIGHT);
    if (!miecz) miecz = this_player()->query_weapon(W_BOTH);
    if (!miecz->id("miecz")) 
	{
	    notify_fail("Musisz trzymac miecz w prawej rece, aby moc to zrobic.\n");
	    return 0;
	}
    opis=miecz->short(this_player(),PL_BIE);
    allbb("podnosi swoj " + opis + " do gory, a klinga rozblyskuje w plomieniach slonca.");
    write("Unosisz swoj " + opis + " do gory, a klinga rozblyskuje w plomieniach slonca.\n");
    return 1;
}

int
rzmodl(string str)
{
    string opis;
    object miecz;
    miecz = this_player()->query_weapon(W_RIGHT);
    if (!miecz->id("miecz"))
	{
	    miecz = this_player()->query_weapon(W_LEFT);
	}
    if (!miecz) miecz = this_player()->query_weapon(W_BOTH);
    if (!miecz->id("miecz")) 
	{
	    notify_fail("Musisz trzymac miecz rece, aby moc to zrobic.\n");
	    return 0;
	}
    opis = miecz->short(this_player(),PL_MIE);
    allbb("przykleka i opierajac sie na wbitym w ziemie " + opis +
	  ", wznosi oczy ku gorze, proszac Sigmara o blogoslawienstwo.");
    write("Przyklekasz i opierajac sie na wbitym w ziemie " + opis +
	  ", wznosisz oczy ku gorze, proszac Sigmara o blogoslawienstwo.\n");
    return 1;
}

int
rzspoliczkuj(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("Komu chcesz wymierzyc policzek?\n");
    return 0;
}
	
	
int
rzprzeklnij(string str)
{
    object *oblist;
    int licz;
    string *konc = allocate(4);
    oblist = parse_this (str,"%l:"+PL_BIE);
    if(sizeof(oblist)!=0)
	{
	    target("patrzac na ciebie porusza bezszelestnie wargami. "
		   +"Ogarnia cie uczucie niepokoju, jakby dotknela cie nielaska "
		   +"Sigmara.",oblist);
		
	    if(sizeof(oblist)>1)
		{
		    konc[0]="Ich";
		    konc[1]="e";
		    konc[2]="a";
		    konc[3]="a";
		}
	    else
		{
		    konc[0]=oblist[0]->koncowka("Jego","Jej","Jego");
		    konc[1]="";
		    konc[2]="ie";
		    konc[3]="e";
		}
	    all2act("patrzac na",oblist,PL_BIE," porusza bezszelestnie wargami. " +		
		    konc[0] + " twarz"+ konc[1] + " bledn"+ konc[2]+" nieco, po chwili jednak "
		    +"odzyskuj"+konc[3]+" swa zwykla barwe.");
	    actor("Patrzysz na",oblist,PL_BIE," szepczac slowa przeklenstwa. "+
		  konc[0] + " twarz" + konc[1] + " bledn" + konc[2] + " i dopiero "
		  +"po chwili odyskuj" + konc[3] + " swa zwykla barwe.");
	    return 1;
	}
    notify_fail("Kogo chcesz przeklnac?\n");
    return 0;
}

int
rzsalutuj(string str)
{
    object *oblist;
    oblist = parse_this (str,"%l:"+PL_CEL);
    if(stringp(str))
	{    
	    if(sizeof(oblist)!=0)
		{
		    target("salutuje ci, podnoszac dlon do czola.",oblist);
		    actor("Salutujesz",oblist,PL_CEL);
		    all2actbb("salutuje",oblist,PL_CEL," podniesiona do czola dlonia.");
		    return 1;
		}
	    else 
		{
		    notify_fail("Komu chcesz zasalutowac?\n");
		    return 0;
		}
	}
    else
	{
	    allbb("podnosi dlon do czola w honorowym gescie salutu.");
	    write("Podnosisz dlon do czola w honorowym gescie salutu.\n");
	    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
rzspojrz(string str)
{
    object *oblist;
    oblist = parse_this (str,"[na] %l:"+PL_BIE);
    if(sizeof(oblist)!=0)
	{
	    string konc;
	    int licz;
	    target("patrzy na ciebie spod przymknietych powiek. Czujesz,"
		   +"jak przechodzi cie dreszcz strachu.",oblist);
	    actor("Patrzysz na",oblist,PL_BIE," spod przymknietych powiek.");
	    konc = "je";
	    if(sizeof(oblist) > 1)
		for(licz = 0; licz < sizeof(oblist)-1; licz++)
		    {
			if(!oblist[licz]->query_gender())
			    konc = "ich";
		    }
	    else
		konc = oblist[0]->koncowka("go","ja","je");
	    all2actbb("patrzy na", oblist, PL_BIE," spod przymknietych powiek. Widzisz, "
		      +"jak przechodzi "+ konc  + " dreszcz strachu.");
	    return 1;
	}
    else
	if(stringp(str))
	    {
		notify_fail("Spojrz na kogo?");
		return 0;
	    }
    allbb("taksuje wszystkich wzrokiem spod przymknietych powiek. Czujesz, "
	  +"jak przechodzi cie dreszcz strachu.");
    write("Taksujesz wszystkich wzrokiem.\n");
    return 1;
}

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 (oblist[0]->query_guild_name_occ()!=GUILD_NAME)
		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 uscisnac??\n");
    return 0;
}

przestan_walczyc(object kto)
{
    object *wrogowie=kto->query_enemy(-1);
    int i=sizeof(wrogowie)-1;
    for (;i>=0;i--)
	{
	    wrogowie[i]->stop_fight(kto);
	    kto->stop_fight(wrogowie[i]);
	}
}
