inherit "/d/Imperium/std/room";
inherit "/lib/skill_raise";
inherit "/lib/guild_support";
#include "defs.h"
mapping skille=([]);
void set_up_skills();
void przekaz(object player, int item);
int odbierz(string str);
void
create_imperium_room()
{
   set_short("Zbrojownia Klanu Bialego Tygrysa");
   set_long("Niewielkie pomieszczenie jest odnoga podluznego korytarza widocznego na poludniu. "+
            "Posrod scian dostrzegasz krzatajacych sie uczniow znoszacych coraz to nowe dostawy "+
            "broni i zbroji od klanowego kowala. Przy scianach spostrzegasz kukly, ktore zapewne "+
            "sluza uczniom do treningu i testowania nowych rodzajow broni. Na scianie tuz nad "+
            "kufrem dostrzegasz tabliczke.\n");
   add_prop(ROOM_I_INSIDE,1);
   add_prop(ROOM_I_LIGHT,1);
   add_prop(ROOM_M_NO_ATTACK,1);
   add_item("tabliczke", "Tu mozesz odebrac:\n"+
                         "*** Smukla polyskujaca katane*** - jednoreczna\n"+
                         "*** Dluga jednosieczna katane*** - jednoreczna\n"+
                         "*** Olsniewajaca segmentowa haidate*** - zbroja plytowa\n"+
                         "*** Lekki poreczny kote*** - puklerz\n"+
                         "*** Stalowy dziobaty kabuto*** - helm\n"+
                         "*** Czerwone plocienne kimono*** - plaszcz\n");
   set_up_skills();
   clone_object(PATH+"obj/skrzynia")->move(TO);
   add_exit(PATH + "room/2", "poludnie");
}
void
przekaz(object player, int nr)
{
	object item;
	if(player->query_guild_name_occ() != GUILD_NAZWA)
	{
		player->catch_msg("Kowal odmawia wspolpracy!\n");
		return;
	}
	setuid();
	seteuid(getuid());
	switch(nr)
	{
		case 0: item = clone_object(PATH + "obj/katana1");
		        item->move(player);
		        player->catch_msg("Kowal wrecza ci nowiutka smukla polyskujaca katane.\n");
		        item->set_hit(player->query_stat(SS_OCCUP) / 4 + 1);
		        item->set_pen(player->query_stat(SS_OCCUP) / 4 + 1);
		        break;
		case 1: item = clone_object(PATH + "obj/katana2");
		        item->move(player);
		        player->catch_msg("Kowal wrecza ci nowiutka dluga jednosieczna katane.\n");
		        item->set_hit(player->query_stat(SS_OCCUP) / 4 + 1);
		        item->set_pen(player->query_stat(SS_OCCUP) / 4 + 1);
		        break;
		case 2: item = clone_object(PATH + "obj/heidate");
		        set_alarm(0.5, 0.0, &item->move(player) );
		        player->catch_msg("Kowal wrecza ci nowiutka olsniewajaca segmentowa haidate.\n");
		        break;
		case 3: item = clone_object(PATH + "obj/kote");
		        item->move(player);
		        player->catch_msg("Kowal wrecza ci nowiutki lekki poreczny kote.\n");
		        break;
		case 4: item = clone_object(PATH + "obj/kabuto");
		        item->move(player);
		        player->catch_msg("Kowal wrecza ci nowiutki stalowy dziobaty kabuto.\n");
		        break;
		case 5: item = clone_object(PATH + "obj/kimono");
		        item->move(player);
		        player->catch_msg("Kowal wrecza ci nowiutkie czerwone plocienne kimono.\n");
		        break;
		default: player->catch_msg("Cos sie zwalilo, zglos sie natychmiast do opiekuna gildii.\n");
	}
	tell_room(environment(player), QCIMIE(player, PL_MIA) + " odbiera jakis przedmiot od kowala.\n", ({ player }));
}
int
odbierz(string str)
{
	NF("Co chcesz odebrac?\n");
	if(!str) return 0;
	if(str == "smukla polyskujaca katane" ||
	   str == "smukla katane" ||
	   str == "polyskujaca katane" ||
	   str == "pierwsza katane" ||
	   str == "katane") przekaz(TP, 0);
	else if(str == "dluga jednosieczna katane" ||
	        str == "dluga katane" ||
	        str == "jednosieczna katane" ||
	        str == "druga katane") przekaz(TP, 1);
	else if(str == "olsniewajaca segmentowa haidate" ||
	        str == "segmentowa haidate" ||
	        str == "olsniewajaca haidate" ||
	        str == "haidate") przekaz(TP, 2);
	else if(str == "lekki poreczny kote" ||
	        str == "lekki kote" ||
	        str == "poreczny kote" ||
	        str == "kote") przekaz(TP, 3);
	else if(str == "stalowy dziobaty kabuto" ||
	        str == "dziobaty kabuto" ||
	        str == "stalowy kabuto" ||
	        str == "kabuto") przekaz(TP, 4);
	else if(str == "czerwone plocienne kimono" ||
	        str == "czerwone kimono" ||
	        str == "plocienne kimono" ||
	        str == "kimono") przekaz(TP, 5);
    else return 0;
    return 1;
}
void
init()
{
   ::init();
   add_action("odbierz", "odbierz");
   init_skill_raise();
}
int
query_max_train(object player)
{
	int stat;
	stat = player->query_stat(SS_OCCUP);
	return ((stat / 18 > 10) ? 10 : (stat / 18));
}
void
dodaj_trening(int skill, int *poziomy)
{
        skille[skill]=poziomy;
}
int
sk_hook_improved_max(int sum, int poziom)
{
        string str;
        if(poziom == skille[sum][10]) str = "Obawiam sie ze juz wiecej nie potrafie cie niczego nauczyc.\n";
        else str = "Brak Ci doswiadczenia by dalej sie szkolic.\n";
        notify_fail(str);
        return 0;
}
int
sk_hook_no_more_improve()
{
        string str;
        if (TP->query_guild_name_occ() == GUILD_NAZWA)
        {
                str=(query_max_train(TP) == 10) ?
                        "Niczego wiecej sie tutaj nie nauczysz.\n":
                        "Brak Ci doswiadczenia by dalej sie szkolic.\n";
        }
        else str= "Nie mozesz sie tutaj szkolic!\n";
        notify_fail(str);
        return 0;
}
void
set_up_skills()
{
    dodaj_trening(SS_WEP_SWORD,   ({ 50, 55, 60, 65, 70, 75, 80, 82, 83, 85, 90}));
    dodaj_trening(SS_WEP_KNIFE,    ({ 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90}));
    dodaj_trening(SS_DEFENCE, ({ 50, 55, 60, 63, 64, 65, 66, 67, 68, 69, 70}));
    dodaj_trening(SS_PARRY,   ({ 50, 55, 60, 63, 64, 65, 66, 67, 68, 69, 70}));
    dodaj_trening(SS_SHIELD_PARRY,   ({ 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90}));
    dodaj_trening(SS_BLIND_COMBAT,({ 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80}));
    dodaj_trening(SS_2H_COMBAT, ({ 50, 55, 60, 63, 64, 65, 66, 67, 68, 69, 70}));
    dodaj_trening(SS_TRACKING, ({ 50, 55, 60, 63, 64, 65, 66, 67, 68, 69, 70}));
    dodaj_trening(SS_HIDE, ({ 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80}));
    dodaj_trening(SS_SNEAK, ({ 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80}));
    dodaj_trening(SS_AWARENESS, ({ 50, 55, 60, 63, 64, 65, 66, 67, 68, 69, 70}));
    dodaj_trening(PIRUET, ({ 10, 25, 35, 43, 54, 63, 73, 80, 87, 93, 100}));
    dodaj_trening(SS_UNARM_COMBAT, ({10, 25, 35, 43, 54, 63, 73, 80, 87, 93, 100}));
    sk_add_skills(GUILD_SKILLS);
    sk_add_train(SS_WEP_SWORD, 90);
    sk_add_train(SS_WEP_KNIFE, 90);
    sk_add_train(SS_DEFENCE, 70);
    sk_add_train(SS_PARRY, 70);
    sk_add_train(SS_SHIELD_PARRY, 90);
    sk_add_train(SS_BLIND_COMBAT, 80);
    sk_add_train(SS_2H_COMBAT, 70);
    sk_add_train(SS_TRACKING, 70);
    sk_add_train(SS_HIDE, 80);
    sk_add_train(SS_SNEAK, 80);
    sk_add_train(SS_AWARENESS, 70);
    sk_add_train(PIRUET, 100);
    sk_add_train(SS_UNARM_COMBAT, 100);
}
public int
sk_query_max(int snum)
{
    if (!skille[snum]) return 0;
    if(TP->query_guild_name_occ() != GUILD_NAZWA) return 0;
    return skille[snum][query_max_train(TP)];
}
