#include "mith.h"
#include "ryc_zak.h"

inherit "/std/container";

int zamknij(string str);
int otworz(string str);

create_container()
{
    ustaw_nazwe( ({ "skrzynia", "skrzyni", "skrzyni", "skrzynie", "skrzynia",
        "skrzyni", }), ({ "skrzynie", "skrzyni", "skrzyniom", "skrzynie",
        "skrzyniami", "skrzyniach" }), PL_ZENSKI);
        
    dodaj_przym( ({"wielki","debowy"}), ({"wielcy","debowi"}));
    
    set_long("@@dlugi_opis_skrzyni");
     
    add_prop(CONT_I_RIGID, 1); /* Skrzynia jest sztywna, tzn jej objetosc */
    			       /* nie zmienia sie wraz z objetoscia zawartosci*/
    			       /* tak, jak by to bylo w przypadku np torby */

    add_prop(CONT_I_MAX_VOLUME, 250000); /* moze miec maksymalnie objetosc.
    					    Poniewaz ma propa CONT_I_RIGID
    					    zawsze zajmuje tyle miejsca */
    					 
    add_prop(CONT_I_MAX_WEIGHT, 500000); /* mozna wladowac do niej do pol
    					    tony */
    					 
	add_prop(OBJ_M_NO_GET,"Nie jestes w stanie podniesc skrzyni. Prawdopodobnie przymocowano ja do podlogi.\n");


    add_prop(CONT_I_VOLUME, 10000); /* pusta skrzynia zajmowala by 10 litrow, 
    				       gdyby nie miala propa CONT_I_RIGID. */
    				       
    add_prop(CONT_I_WEIGHT, 20000); /* pusta skrzynia wazy 20 kilo */
//	add_prop(OBJ_I_INVIS,100);
    set_no_show_composite(1);
	

    setuid();
    seteuid(getuid()); 
    clone_object(ENGINE+"mlot_sig")->move(this_object());             
    add_prop(CONT_I_CLOSED,1);
}

string 
dlugi_opis_skrzyni()
{
	string s="Jest to duza, debowa skrzynia, w ktorej przechowywane sa relikwie Zakonu Rycerskiego Sigmara. Skrzynia ozdobiona jest mnostwem plaskorzezb, przedstawiajacych mapy imperium, rycerzy na koniach, olbrzymiego wojownika z mlotem i krasoludzka twierdze. Skrzynie zamyka potezny zamek. Co dziwne, nie widzisz zadnego zamka, w ktory moglbys wlozyc klucz. Skrzynia jest ";
	s+=query_prop(CONT_I_CLOSED) ? "zamknieta.\n":"otwarta.\n";
	return s;
}


init()
{
	::init();
	add_action("zamknij","zamknij");
	add_action("otworz","otworz");
	add_action("krzyknij","krzyknij");
}

int 
zamknij(string str)
{
	if (str!="skrzynie")
	{
		notify_fail("Co chcesz zamknac?\n");
		return 0;
	}
	if (query_prop(CONT_I_CLOSED))
	{
		notify_fail("Skrzynia juz jest zamknieta.\n");
		return 0;
	}
	add_prop(CONT_I_CLOSED,1);
	write("Zatrzaskujesz wielka debowa skrzynie. Slyszysz cichy trzask, jakby"
		+" zamykanego zamka.\n");
	say (QCIMIE(TP,PL_MIA)+" zatrzaskuje wielka debowa skrzynie. Slyszysz "
		+"cichy trzask, jakby zamykanego zamka.\n");
	return 1;
}

int
otworz(string str)
{
	if (str!="skrzynie")
	{
		notify_fail("Co chcesz otworzyc?\n");
		return 0;
	}
	if (!query_prop(CONT_I_CLOSED))
	{
		notify_fail("Skrzynia juz jest otwarta.\n");
		return 0;
	}
	write("Probojesz podniesc wieko skrzyni, ale cos jakby trzymalo je od"
		+" wewnatrz. Co gorsza, nie widzisz zadnego miejsca, w ktore moglbys"
		+" wlozyc klucz.\n");	
	say(QCIMIE(TP,PL_MIA)+" bezskutecznie probuje podniesc wieko skrzyni.\n");
	return 1;
}

wysw_komunikat(object kto)
{
	if (!query_prop(CONT_I_CLOSED)) return;
	kto->catch_msg("Ledwie twoj");
	tell_room(environment(kto),"Ledwie "+kto->query_zaimek(PL_DOP,1),({kto}));
	tell_room(environment(kto)," glos przebrzmial, slyszysz cichy odglos, jakby otwieranego zamka. Nagle wieko stojacej za oltarzem skrzyni odskakuje.\n");
	remove_prop(CONT_I_CLOSED);
}
int 
krzyknij(string str)
{
	if (str==HASLO_DO_SKRZYNI && PRAWA->sprawdz_prawa(OTWIERANIE_SKRZYNI,TP))
	{
		set_alarm(0.3,0.0,"wysw_komunikat",TP);
	}
	return 0;
}

