/* Dziura do otchlani
 * napisane przez Alfena
 */

#include "local.h"
#include <pl.h>
#include <stdproperties.h>
#include <macros.h>

#define VOID LPATH + "otchlan"

#define BR1 object_clones(find_object(TPATH + "obj/brama_nw"))[0]
#define BR2 object_clones(find_object(TPATH + "obj/brama_w1w"))[0]
#define BR3 object_clones(find_object(TPATH + "obj/brama_w2w"))[0]
#define BR4 object_clones(find_object(TPATH + "obj/brama_sw"))[0]
#define BB1 object_clones(find_object(TPATH + "obj/brama_nz"))[0]
#define BB2 object_clones(find_object(TPATH + "obj/brama_w1z"))[0]
#define BB3 object_clones(find_object(TPATH + "obj/brama_w2z"))[0]
#define BB4 object_clones(find_object(TPATH + "obj/brama_sz"))[0]

inherit TPATH + "std/twierdza";


int *przyciski = ({0, 0, 0, 0, 0, 0});
string *s_przyciski = ({"czerwony", "czarny", "zloty", "zielony", 
	"bialy", "srebrny"});


void
create_twierdza()
{
	int i;
	
	set_short("Oltarz");
	set_long("Znajdujesz sie w owalnej komnacie, ktorej sciany "+
		"zostaly pokryte dziwnymi, jarzacymi sie freskami. "+
		"Posadzka komnaty skalda sie z dwukolorowych kamieni, na "+
		"ktorych wyryto symbole Bogow wyznawanych w Imperium. "+
		query_long()+" Osiem filarow zakrzywiajacych sie w luki "+
		"podtrzymuje sklepienie. Po srodku komnaty, dokladnie w "+
		"centrum, znajduje sie foremny kamien z widocznymi rowkami, "+
		"sluzacymi zapewne do odprowadzania nadmiaru krwi. Tuz obok "+
		"kamienia znajduje sie dziwna bryla o nieregularnych, "+
		"wiecznie zmiennych kolorach i ksztaltach.\n");
		
	add_item(({"posadzke","symbole","kamienie"}),
		"Symbole wyryte na kamieniach przynaleza do "+
		"Sigmara, Vereny, Mora, Shali, "+
		"Kronosa lub Liadriel. Dziwnie sie czujesz stapajac po nich.\n");
	add_item("filary","Filary zostaly wykonane z kamieni o tej samej "+
		"barwie. Pierwszy filar - zlota, drugi - zieleni, trzeci - "+
		"czerwieni, czwarty - fioletu, piaty - niebieskiego, "+
		"szosty - srebra, siodmy - pomaranczu i osmy - czerni.\n");
	add_item("freski","Freski zostaly narysowane weglem. Przedstawiaja "+
		"postaci ubrane w czarne szaty i plamy czarni wynurzajace sie "+
		"ze studni.\n");
	add_item("kamien","Szary glaz wyraznie kontrastuje z otaczajacym "+
		"cie kolorytem. Tuz przy posadzce dostrzegasz cztery kamienne "+
		"przyciski.\n");
	add_item("bryle","Turdno cos o niej powiedziec. Czasem przypomina "+
		"czlowieka, czasem krasnoluda, a czasem strach cie ogarnia, "+
		"gdy probujesz zdefiniowac jej ksztalt.\n");
	add_item(({"przyciski","kamienne przyciski"}),
		"Zauwazasz "+
		"@@przycisk|0@@"+"czerwony, "+"@@przycisk|1@@"+"czarny, "+
		"@@przycisk|2@@"+"zloty, "+
		"@@przycisk|3@@"+"zielony, "+"@@przycisk|4@@"+
		"bialy i "+"@@przycisk|5@@"+"srebrny przycisk.\n");
		
	
	for  (i=0; i < 6; i++)
		add_cmd_item(({s_przyciski[i]+" przycisk"}),({"przycisnij","wcisnij"}),
		({"@@przycisnij|"+i+"@@", "@@przycisnij|"+i+"@@"}));
		
	add_cmd_item(({"przycisk", "przyciski"}),({"przycisnij","wcisnij"}),
		"Ktory przycisk przycisnac ?\n");
	

	add_exit(LPATH + "wn3", "zachod");
	add_exit(LPATH + "wn4", "wschod");
	add_exit(LPATH + "dziura", "poludnie");
	add_exit(LPATH + "wn1", "polnoc");
}


string
przycisk(string s)
{
	int i = (s[0]-48), p = przyciski[i];
	return (p?"wcisniety ":"");
}



string
przycisnij(string s)
{
	int i = s[0]-48;
	
	
	say(QCIMIE(this_player(), PL_MIA) + " ukl"+
		this_player()->koncowka("akl","ekla")+" przy kamieniu na chwile "+
		"po czym szybko wstal"+this_player()->koncowka("","a")+
		".\n");
	
	if (!przyciski[i])
	{
	switch (i)
	{
		case 0 :
			(LPATH + "most1")->set_pulapka(1);
			break;
		case 1 :
			(LPATH + "most2")->set_pulapka(1);
			break;
		case 2 :
			(LPATH + "kor1")->a();
			(LPATH + "lok1")->a();
			if (BR1->query_open())
			{
				BR1->do_close_door("Nagle "+
					BR1->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
				(BR1->query_other_door())->do_close_door(
					"Nagle "+
					BR1->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
			}
			BB1->do_lock_door("Rozlegl sie cichy trzask.\n");
			BR1->do_lock_door("Rozlegl sie cichy trzask.\n");
			break;
		case 3 :
			(LPATH+"wn1")->aasadsasdads();
			(LPATH+"kor11")->aasdasdasd();
			if (BR2->query_open())
			{
				BR2->do_close_door("Nagle "+
					BR2->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
				(BR2->query_other_door())->do_close_door(
					"Nagle "+
					BR2->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
			}
			BB1->do_lock_door("Rozlegl sie cichy trzask.\n");
			BR2->do_lock_door("Rozlegl sie cichy trzask.\n");
			break;
		case 4 :
			(LPATH + "wn2")->a();
			(LPATH + "kor24")->a();
			if (BR3->query_open())
			{
				BR3->do_close_door("Nagle "+
					BR3->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
				(BR3->query_other_door())->do_close_door(
					"Nagle "+
					BR3->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
			}
			BB3->do_lock_door("Rozlegl sie cichy trzask.\n");
			BR3->do_lock_door("Rozlegl sie cichy trzask.\n");
			break;
		case 5 :
			(LPATH + "kor32")->a();
			(LPATH + "lok2")->a();
			if (BR4->query_open())
			{
				BR4->do_close_door("Nagle "+
					BR4->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
				(BR4->query_other_door())->do_close_door(
					"Nagle "+
					BR4->query_short(PL_MIA)+
					" zatrzasnela sie z hukiem.\n");
			}
			BB4->do_lock_door("Rozlegl sie cichy trzask.\n");
			BR4->do_lock_door("Rozlegl sie cichy trzask.\n");
			break;
	}
	przyciski[i]=1;
	}
	else
	{
	switch (i)
	{
		case 0 :
			(LPATH + "most1")->set_pulapka(0);
			break;
		case 1 :
			(LPATH + "most2")->set_pulapka(0);
			break;
		case 2 :
			(LPATH + "kor1")->a();
			(LPATH + "lok1")->a();
			BB1->do_unlock_door("Rozlegl sie cichy trzask.\n");
			BR1->do_unlock_door("Rozlegl sie cichy trzask.\n");
			break;
		case 3 :
			(LPATH + "wn1")->a();
			(LPATH + "kor11")->a();
			BB2->do_unlock_door("Rozlegl sie cichy trzask.\n");
			BR2->do_unlock_door("Rozlegl sie cichy trzask.\n");
			break;
		case 4 :
			(LPATH + "wn2")->a();
			(LPATH + "kor24")->a();
			BB3->do_unlock_door("Rozlegl sie cichy trzask.\n");
			BR3->do_unlock_door("Rozlegl sie cichy trzask.\n");
			break;
	 	case 5 :
	 		(LPATH + "kor32")->a();
	 		(LPATH + "lok2")->a();
			BB4->do_unlock_door("Rozlegl sie cichy trzask.\n");
			BR4->do_unlock_door("Rozlegl sie cichy trzask.\n");
			break;
	}
	przyciski[i] = 0;
	}
	
	return "Uklek"+this_player()->koncowka("les","las")+" na chwile przy "+
		"kamieniu i szybkim ruchem wcisn"+
		this_player()->koncowka("ales","elas")+" "+s_przyciski[i]+
		" przycisk, po czym wsta"+
		this_player()->koncowka("les","las")+".\n";
}


int
prevent_enter(object ob)
{
	if (interactive(ob))
		write("Do twych uszu dotarl odglos jeku, gdy "+
			"postawil"+ob->koncowka("e","a")+"s stope "+
			(CAN_SEE_IN_ROOM(ob)?
			"posadzce.\n":
			"czyms.\n"));
	return ::prevent_enter(ob);
}


int
prevent_leave(object ob)
{
	if (interactive(ob))
		write("Do twych uszu dotarl odglos westchnienia, gdy "+
			ob->koncowka("zszdle","zeszla")+"s z "+
			(CAN_SEE_IN_ROOM(ob)?
			"posadzki.\n":
			"czegos.\n"));
	return ::prevent_leave(ob);
}


