/*
 *		wisior dla wyznawcow Grungniego
 *		
 *
 *		Dhor'99
 *
 */
 
inherit "/std/object.c";

#include <cmdparse.h>
#include <macros.h>


#include <stdproperties.h>
#include <wa_types.h>

#define TP this_player()

#include "dhor.h"; 
#include "emoty_grungni.h";

#pragma no_inherit
#define GRUNGNI_SUBLOC "_wisior_wyznawcy_grungniego_"


int zalozony;
int wear(string co);
int remove(string co);

create_object()
{
	ustaw_nazwe (({"wisior","wisiora","wisiorowi","wisior","wisiorem","wisiorze"}),
		({"wisiory","wisiorow","wisiorom","wisiory","wisiorami","wisiorach"}),
		PL_MESKI_NZYW);

	dodaj_przym ("misterny","misterni");
	
	set_long ("Jest to niewielki amulet z lancuszkiem noszony przez wyznawcow "+
	"Grungniego. Zbudowany jest z czworokatnego, gladko wyszlifowanego o zaokraglonych "+
	"krawedziach mineralu zwanego przez krasnoludow Khur-Thar. Mineral ten ma "+
	"dziwna szaro-matowa powierzchnie, wyglada jak kamien, ale gdy wen "+
	"uderzyc twardym przedmiotem wydaje z siebie metaliczny dzwiek - laczy w sobie "+
	"cechy kamienia i metalu. Po srodku znajduje sie maly, srebrny, misternie "+
	"wykonany kilof - symbol Grungniego. Kilof jest umieszczony tak, ze powierzchnia "+
	"kamienia pozostaje gladka. Pod symbolem znajduja sie male starannie "+
	"wykonane dziwne znaki. Nad kilofem, przy krawedzi kamienia, znajduje sie sredniej "+
	"wielkosci kolko przez ktore przeciagniety jest staranie wykonany srebrny "+
	"lancuszek. Wisior ten mozesz zawiesic na szyi, by podkreslic swa wiare "+
	"w Grungniego. Cos podpowiada ci, ze powinie"+TP->koncowka("nes","nas")+" uzyc "+
	"'gkomendy' oraz 'ghistoria' by dowiedziec sie nieco wiecej.\n");
		
	add_prop (OBJ_I_WEIGHT, 150);
	add_prop (OBJ_I_VALUE, 0);
	set_alarm(0.3,0.0,"dodaj_propy");
}
void
init()
{
    ::init ();
	add_action("remove","zdejmij");
	add_action("wear","zawies");
	add_action("zniszcz","zniszcz");
	init_emoty();
}

wyrzuc(object kogo)
{
   kogo->catch_msg("Stracil" + kogo->koncowka("es","as") + 
   	" blogoslawienstwo Grungniego ! Twoj wisior rozsypal sie w proch.\n");
   kogo->clear_bit(1,0);
   remove_object();
}

dodaj_propy()
{
	add_prop(OBJ_M_NO_SELL, "Nie odwazysz sie sprzedac swojego amuletu! Moze to sciagnac na ciebie gniew Grungniego.\n");
    add_prop(OBJ_M_NO_DROP, "Nie mozesz wyrzucic wisiora.\n");
    add_prop(OBJ_M_NO_GIVE, "Nie mozesz nikomu dac wisiora.\n");
    add_prop(OBJ_M_NO_STEAL, 1);
	add_prop(OBJ_M_NO_GET,"Nie jestes w stanie podniesc wisiora... Cos poteznego powstrzymuje twoja wole.\n");
   
   if (!ADMIN->query_czlonek(environment(this_object())->query_real_name())&&
       !environment(this_object())->query_wiz_level())
      wyrzuc(environment(this_object())); 
   else
      environment(this_object())->set_bit(1,0);

}

usun_propy()
{
	remove_prop(OBJ_M_NO_SELL);
    remove_prop(OBJ_M_NO_DROP);
    remove_prop(OBJ_M_NO_GIVE);
    remove_prop(OBJ_M_NO_STEAL);
	remove_prop(OBJ_M_NO_GET);
}


int
wear(string co)
{
	mixed pom;
	object komu;
	
//        if (TP->query_race()!="krasnolud") return notify_fail("Wisior moze nosic tylko krasnolud. \n");
	if (zalozony) return notify_fail("Ten wisior jest juz zawieszony.\n");
    if (!co || !wildmatch("wisior*",co)) return notify_fail("Co chcesz zawiesic ?\n");
    if (wildmatch("wisior ??*",co)) 
    {
    	parse_command(co, environment(TP),"'wisior' %l:"+PL_CEL,pom);
    	pom=NORMAL_ACCESS(pom,0,0);
    	if (!sizeof(pom)||sizeof(pom)>1) return notify_fail("Komu chcesz zawiesic wisior?\n");
    	komu=pom[0];
    	if (!ADMIN->query_s_lub_k(TP->query_real_name()))
    	   return notify_fail("Nie masz przychylnosci Grungniego, by blogoslawic innych w jego " +
    	   	"imie.\n");
//	if (komu->query_race()!="krasnolud") return notify_fail("Wisior moze nosic tylko krasnolud. \n");
    	if (ADMIN->query_niewierni(komu->query_real_name())) return notify_fail("Probujesz zawiesic wisior "+komu->short(PL_CEL)+" jednak w swym umysle slyszysz slowa pradawnej krasnoludzkiej piesni o tych ktorzy wyrzekli sie swej wiary. Widocznie "+komu->short(PL_MIA)+" odrzucil juz wczesniej wisior ktory otrzymal. \n");
	if (!interactive(komu)) return notify_fail("Nie mozesz zawiesic wisiora " +komu->short(PL_CEL) + "!\n");
    	if (komu==TP) return notify_fail("Aby zawiesic sobie wisior uzyj komendy 'zawies wisior'.\n");
    	if (komu->query_subloc_obj(GRUNGNI_SUBLOC)) 
    	{
    		write(komu->short()+" juz ma wisior.\n");
    		return 1;
    	}

   // KLUB  

		usun_propy();
		setuid();
		seteuid(getuid());
    	komu->add_subloc(GRUNGNI_SUBLOC,this_object());
        move(komu,GRUNGNI_SUBLOC);
        clone_object(MASTER_OB(this_object()))->move(TP);
        ADMIN->add_member(komu->query_real_name());
        dodaj_propy();

    	write("Szepczac slowa starozytnej modlitwy, zawieszasz "+ komu->short(PL_CEL)+" wisior "+
              "na szyje. "+ komu->koncowka("Ten","Ta") +" unosi reke do czola mruzac oczy, jak gdyby widzia"+ komu->koncowka("l","la") + " przed " +
              "soba cos, co niedostepne pozostaje dla wzroku innych.. Po chwili potrzasa glowa, wracajac do rzeczywistosci. \n");
    	
	komu->catch_msg(QCIMIE(TP,PL_MIA)+" szepczac slowa starozytnej modlitwy, zawiesza Ci wisior "+
              "na szyje. Przez chwile tracisz ostrosc widzenia, po czym przed Twymi "+
              "oczyma pojawia sie podziemny korytarz. Widzisz starego krasnoluda "+
              "z dluga, rozdwojona broda, kilofem na ramieniu i oliwna lampa w prawej "+
              "rece, maszerujacego razno chodnikiem kopalni. Zanim zdolal"+komu->koncowka("es","as") +" jednak "+
              "dokladniej mu sie przyjrzec, obraz znika.. "+
              "Przed toba stoi "+QCIMIE(TP,PL_MIA)+" usmiechajac sie lekko. \n");

    	tell_room(environment(TP),QCIMIE(TP,PL_MIA)+" szepczac slowa starozytnej modlitwy, zaklada "+komu->short(PL_CEL) +" wisior "+
                "na szyje. "+ komu->koncowka("Ten","Ta") +" unosi reke do czola mruzac oczy, jak gdyby widzia"+ komu->koncowka("l","la") +" przed "+
                "soba cos, co niedostepne pozostaje dla wzroku innych.. Po chwili potrzasa glowa, wracajac do rzeczywistosci. \n",({TP,komu}));

	  komu->set_bit(1,0);

    	return 1;
    }	
    this_player()->add_subloc(GRUNGNI_SUBLOC, this_object());
    write("Z dumna mina zawieszasz sobie na szyi misterny wisior, symbol twojej wiary w Grungniego.\n");
    say(QCIMIE(TP,PL_MIA)+" z dumna mina zawiesza sobie na szyi misterny wisior, symbol jego wiary w Grungniego. \n");
    move(TP, GRUNGNI_SUBLOC);
    zalozony=1;
//	update_actions();
    return 1;
}


int
remove(string co)
{
    notify_fail("Co chcesz zdjac?\n");
    if (!(co=="wisior")) return 0;
    if (!zalozony) return notify_fail("Ten wisior nie jest zalozony.\n");
    this_player()->remove_subloc(GRUNGNI_SUBLOC);
    move(TP);
    zalozony=0;
    write("Zdejmujesz z szyi wisior.\n");
    say(QCIMIE(TP,PL_MIA)+" zdejmuje z szyi wisior.\n") ;
    
//	update_actions();
    return 1;
}

void
leave_env(object from, object to)
{

    this_player()->remove_subloc(GRUNGNI_SUBLOC);
    ::leave_env(from, to);
}

string
show_subloc(string subloc, object on_obj, object for_obj)
{
    if (on_obj == for_obj)
        return "Na szyi nosisz zawieszony misterny wisior wykonany z kawalka niezwyklego kruszcu z wybitym na nim znakiem kilofa, symbol wiary w Grungniego. \n";
        return "Na szyi zawieszony ma misterny wisior wykonany z kawalka niezwyklego kruszcu z wybitym na nim znakiem kilofa, symbol wiary w Grungniego. \n";
}

string 
query_auto_load ()
{
        return MASTER_OB(this_object());
}

int
zniszcz(string str)
{
	if (str!="wisior") return notify_fail("Co chcesz zniszczyc?\n");
	write("Zaciskajac reke na amulecie gwaltownym szarpnieciem zrywasz "+
              "lancuszek, po czym odrzuca go od siebie. Na twoim czole pojawiaja sie "+
 	      "krople potu a rece zaczynaja drzec. \n");

	say(QCIMIE(TP, PL_MIA)+" zaciska reke na amulecie gwaltownym szarpnieciem zrywajac "+
        "lancuszek, po czym odrzuca go od siebie. Na "+TP->koncowka("jego","jej")+" czole pojawiaja sie "+
	"krople potu a rece zaczynaja drzec, jak gdyby ich wlasciciel doswiadczyl "+
	"przed chwila straszliwego wysilku i cierpienia. \n");
	(ADMIN->remove_member(TP->query_real_name()));
	this_player()->clear_bit(1,0);
	remove_object();
	return 1;
}
