/*
 * 	Zielarz dla Zgromadzenia Halflindzkiego.
 *	Zajmuje sie: uzupelnianiem ilosci tytoniu w kapciuchu,
 * 	albo napelnianiem kapciucha od nowa jednym z trzech 
 *	rodzajow ziela fajkowego.
 *	Mithandir 29 styczen 1999
 */
 
#include "halfy.h"

inherit (SDIR + "npc");
inherit "/lib/trade";

#include <ss_types.h>
#include <macros.h>
#include <stdproperties.h>



#define TOBY (ODIR+"toby.c")
#define GWIAZDA (ODIR+"gwiazda.c")
#define LISCIE (ODIR+"liscie.c")

void
create_monster()
{
    ustaw_imie (({"Tobold", "Tobolda","Toboldowi", "Tobolda","Toboldem", "Toboldzie"}));

    ustaw_odmiane_rasy (PL_HALFLING);

    dodaj_przym (({"wesoly","usmiechniety"}),({"weseli","usmiechnieci"}));

    dodaj_nazwy( ({"zielarz","zielarza","zielarzowi","zielarza",
    		   "zielarzem","zielarzu"}),
    		 ({"zielarze","zielarzy","zielarzom","zielarzy",
                        "zielarzamimi","zielarzach"}),PL_MESKI_OS);
    dodaj_nazwy( ({"tobold","tobolda","toboldowi","tobolda","toboldem","toboldzie"}),
    		 PL_MESKI_OS);


    set_long ("Siedzi tu wesoly, usmiechniety od ucha do ucha halfling, z "+
    	"zadowoleniem pociagajacy co chwila dym ze swej fajki. Obok niego "+
    	"leza pudelka z roznymi gatunkami ziela fajkowego.\n");


    set_gender(G_MALE);

    add_prop(CONT_I_WEIGHT, 60000);
    add_prop(CONT_I_HEIGHT, 120);

    set_skill(SS_DEFENCE, 25 + random(5));
    set_skill(SS_WEP_KNIFE, 55 + random(10));
    set_skill(SS_UNARM_COMBAT, 15 + random(5));
    set_skill(SS_PARRY, 15 + random(10));

    set_stats(({ 40, 42, 38, 55, 62, 50}));

    set_act_time(10);
    add_act("emote wciaga gleboko dym z fajki, po czym wypuszcza go, tworzac wokol siebie wielka, aromatyczna chmure.");
    add_act("emote zaciaga sie dymem z fajki i wypuszcza go malymi koleczkami, ktore rozlatuja sie na wszystkie strony.");
    add_act("emote sprawdza, czy nie konczy sie ziele w fajce.");
    add_act("powiedz sproboj najlepszego ziela fajkowego!.");
    add_act("emote usmiecha sie blogo.");
    add_act("emote gasi fajke, starannie ja oczyszcza, napelnia zielem i ponownie zapala.");
    add_act("powiedz Chcesz kupic ziele fajkowe? Nie mogles trafic lepiej. Mam az trzy rodzaje!");
   
    add_ask(({"ziele","ziela","tyton","gatunki","rodzaje"}), VBFC_ME("ziela"));
    add_ask(({"liscie z langunten","liscie"}), VBFC_ME("liscie"));
    add_ask(({"starego tobiego","tobiego","starego"}), VBFC_ME("toby"));
    add_ask(({"gwiazde poludnia","gwiazde"}), VBFC_ME("gwiazda"));       

    config_default_trade();
}

void
add_introduced(string imie)
{
    set_alarm(2.0, 0.0, "return_introduce", imie);
}

void
powiedz(string co)
{
        command("powiedz " + co);
}

string
query_presentation()
{
    return "Tobold Hornblower, Zielarz, halfling";
}

void
return_introduce(string kto)
{
    command("przedstaw sie " + OB_NAME(find_living(kto, 0)));
}

int
czy_kapciuch(object ob)
{
	return ob->id("kapciuch");
}

object 
kapciuch()
{
	object *co=filter(all_inventory(TP), czy_kapciuch);
	if (sizeof(co)==0) 
		return 0;
	return co[0];
}


string 
ziela()
{
    return ("Zielarz odpowiada: Mam trzy gatunki ziela najwyzszej marki:\n\n"+
"   - Liscie z Langunten ( znane ze swojego doskonalego smaku )\n"+
"   - Stary Toby ( nieco mniej wykwintny smak, ale bardzo wolno sie pala )\n"+
"   - Gwiazda Poludnia ( znacznie tansze niz pozostale dwa, choc nie tak \n"+
"               szlachetne )\n"+
	"Moge napelnic twoj kapciuch dowolnym z tych gatunkow, oczywiscie za stosowna oplata.\n");
}

string
liscie()
{
	 string str="Zielarz odpowiada: Liscie z Langunten to ziele fajkowe najwyzszego "+
	 	"gatunku. Rownego mu smakiem prozno szukac w calym Imperium. "+
	 	"Jesli raz go sprobojesz, nigdy nie bedzie ci smakowac zadne "+
	 	"inne. Niestety, jego cena dorownuje smakowi. Pelna porcja "+
	 	"Lisci kosztuje "+LISCIE->query_cena()+" miedziakow. ";
	 int ile;
	 object kap=kapciuch();
	 if (!kap) return str+"Zeby moc kupic ziele, potrzebujesz "+
	 	"kapciucha!\n";
	 if (kap->query_ziele()!=LISCIE && kap->query_ziele()!=0)
	 	return str+"W twoim kapciuchu znajduje sie inne ziele. Nie "+
	 		"mozesz mieszac gatunkow! Musisz oproznic swoj "+
	 		"kapciuch, zanim bede mogl napelnic go Liscmi z "+
	 		"Langunten.\n";
	 if (kap->query_ziele()==0)
	 	return (str+"\n");
	 ile=100-kap->query_max();
	 ile=LISCIE->query_cena()*ile/100;
	 return str+"Uzupelnienie twojego zapasu Lisci do pelna bedzie "+
	 	"kosztowac "+ile+" miedziakow.\n";
}

string	 
toby()
{
	 string str="Stary Toby to bardzo szlachetny gatunek ziela "+
	 	"fajkowego. Jest specjalnie tak spreparowany, aby jego nawet "+
	 	"niewielki zapas starczal na dlugie wedrowki. Niestety nie "+
	 	"dorownuje pod wzgledem smaku slawnym Lisciom z Langunten. "+
	 	"Pelna porcja Starego Tobiego kosztuje "+TOBY->query_cena()+
	 	" miedziakow. ";
	 int ile;
	 object kap=kapciuch();
	 if (!kap) return str+"Zeby moc kupic ziele, potrzebujesz "+
	 	"kapciucha!\n";
	 if (kap->query_ziele()!=TOBY && kap->query_ziele()!=0)
	 	return str+"W twoim kapciuchu znajduje sie inne ziele. Nie "+
	 		"mozesz mieszac gatunkow! Musisz oproznic swoj "+
	 		"kapciuch, zanim bede mogl napelnic go Starym "+
	 		"Tobim.\n";
	 if (kap->query_ziele()==0)
	 	return (str+"\n");
	 ile=100-kap->query_max();
	 ile=TOBY->query_cena()*ile/100;
	 return str+"Uzupelnienie twojego zapasu Starego Tobiego do pelna "+
	 	"bedzie kosztowac "+ile+" miedziakow.\n";
}
	
string	 
gwiazda()
{
	 string str="Gwiazda Poludnia jest bardzo popularnym zielem, jednak "+
	 	"szlachetnoscia smaku nie dorownuje tak znanym gatunkom jak "+
	 	"Liscie z Langunten albo Stary Toby. Jest jednak w "+
	 	"porownaniu z nimi bardzo tania. Pelna porcja Gwiazdy "+
	 	"Poludnia kosztuje "+GWIAZDA->query_cena()+" miedziakow. "; 
	 int ile;
	 object kap=kapciuch();
	 if (!kap) return (str+"Zeby moc kupic ziele, potrzebujesz "+
	 	"kapciucha!\n");
	 if ((kap->query_ziele()!=GWIAZDA) && (kap->query_ziele()!=0))
	 	return (str+"W twoim kapciuchu znajduje sie inne ziele. Nie "+
	 		"mozesz mieszac gatunkow! Musisz oproznic swoj "+
	 		"kapciuch, zanim bede mogl napelnic go Gwiazda "+
	 		"Poludnia.\n");
	 if (kap->query_ziele()==0)
	 	return (str+"\n");
	 ile=100-kap->query_max();
	 ile=GWIAZDA->query_cena()*ile/100;
	 return (str+"Uzupelnienie twojego zapasu Gwiazdy Poludnia do pelna "+
	 	"bedzie kosztowac "+ile+" miedziakow.\n");
}

int
kup_gwiazde()
{
	string str="";
	object kap;
	int ile, cena;
	kap=kapciuch();
	if (!kap) return notify_fail("Zeby moc kupic ziele, potrzebujesz "+
	 	"kapciucha!\n");
	if (kap->query_ziele()!=GWIAZDA && kap->query_ziele())
		return notify_fail("W twoim kapciuchu znajduje sie juz inny "+
			"gatunek ziela. Nie wolno mieszac gatunkow!\n");
	ile=100-kap->query_max();
	cena=ile* (GWIAZDA->query_cena())/100;
	if (sizeof(pay(cena,this_player(),0,0,0,0,0))==1)
	    return notify_fail("Napelnienie twojego kapciucha kosztowalo by "+
	       cena+" miedzianych monet. Nie masz takiej sumy!\n");
	kap->dodaj(ile);
	kap->set_ziele(GWIAZDA);
        write("Zielarz napelnia twoj kapciuch zapasem Gwiazdy Poludnia. "+
        	"Placisz mu "+cena+" miedzianych monet.\n");
       	return 1;
}


int
kup_liscie()
{
	string str="";
	object kap;
	int ile, cena;
	kap=kapciuch();
	if (!kap) return notify_fail("Zeby moc kupic ziele, potrzebujesz "+
	 	"kapciucha!\n");
	if (kap->query_ziele()!=LISCIE && kap->query_ziele())
		return notify_fail("W twoim kapciuchu znajduje sie juz inny "+
			"gatunek ziela. Nie wolno mieszac gatunkow!\n");
	ile=100-kap->query_max();
	cena=ile*(LISCIE->query_cena())/100;
	if (sizeof(pay(cena,this_player(),0,0,0,0,0))==1)
	    return notify_fail("Napelnienie twojego kapciucha kosztowalo by "+
	       cena+" miedzianych monet. Nie masz takiej sumy!\n");
	kap->dodaj(ile);
	kap->set_ziele(LISCIE);
        write("Zielarz napelnia twoj kapciuch zapasem Lisci z Langunten. "+
        	"Placisz mu "+cena+" miedzianych monet.\n");
       	return 1;
}
	
        
int
kup_tobiego()
{
	string str="";
	object kap;
	int ile, cena;
	kap=kapciuch();
	if (!kap) return notify_fail("Zeby moc kupic ziele, potrzebujesz "+
	 	"kapciucha!\n");
	if (kap->query_ziele()!=TOBY && kap->query_ziele())
		return notify_fail("W twoim kapciuchu znajduje sie juz inny "+
			"gatunek ziela. Nie wolno mieszac gatunkow!\n");
	ile=100-kap->query_max();
	cena=ile*(TOBY->query_cena())/100;
	if (sizeof(pay(cena,this_player(),0,0,0,0,0))==1)
	    return notify_fail("Napelnienie twojego kapciucha kosztowalo by "+
	       cena+" miedzianych monet. Nie masz takiej sumy!\n");
	kap->dodaj(ile);
	kap->set_ziele(TOBY);
        write("Zielarz napelnia twoj kapciuch zapasem Starego Tobiego. "+
        	"Placisz mu "+cena+" miedzianych monet.\n");
       	return 1;
}

			
int 
kup(string str)
{
	string co;
	switch(str)
	{
	    case "gwiazde":
	    case "gwiazde poludnia":
	    	return kup_gwiazde();
	    case "tobiego":
	    case "starego":
	    case "starego tobiego":
	    	return kup_tobiego();
	    case "liscie":
	    case "liscie z langunten":
	    	return kup_liscie();
	    default:
	    	return notify_fail("Ktory z gatunkow chcesz kupic? Liscie, Gwiazde czy Tobiego?\n");
	}
}
				
init_living()
{
	add_action(kup,"kup");
} 