/*
 * To jest taki moj maly pomysl pod tytulem 
 * Charity.c bo nie wiem na razie jak to sie 
 * bedzie nazywac.
 * To jest obiekt ktory ma za zadanie zawierac
 * w sobie bron i zbroje ktore zechca tu
 * wrzucic gracze. Cos na ksztalt charity box.
 * Tyle ze za umieszczanie tu rzeczy dostaje sie
 * malutki bonusik w doswiadczeniu a wyjmowac
 * mozna tylko 1 sztuke broni i 1 sztuke zbroi.
 *
 * Created by Silvy - start 12.03.97
 * Last Update - 6.01.98
 *
 */
 
inherit "/std/container";

#include <stdproperties.h>
#include <macros.h>
#include <silvy.h>

#define GRACZ_WZIAL_BRON   "_gracz_wzial_bron_z_urny"
#define GRACZ_WZIAL_ZBROJE  "_gracz_wzial_zbroje_z_urny"
#define OBJ_I_WZIETY_Z_URNY    "_obj_i_wziety_z_urny"

void ofiara(object cos, object ktos);

object w1,w2,w3,a1,a2,a3;

void
create_container()
{
    ustaw_nazwe(({"urna","urny","urnie","urne","urna","urnie"}),
        ({"urny","urn","urnom","urny","urnami","urnach"}),PL_ZENSKI);        
    dodaj_przym("ofiarny","ofiarni");
    ustaw_shorty(({"urna ofiarna","urny ofiarnej","urnie ofiarnej","urne ofiarna",
        "urna ofiarna","urnie ofiarnej"}),
        ({"urny ofiarne","urn ofiarnych","urnom ofiarnym","urny ofiarne",
        "urnami ofiarnymi","urnach ofiarnych"}),PL_ZENSKI);
    set_long("Wielka, wmurowana w podloge urna jest dominujacym elementem " +
        "tego pomieszczenia. Wykonana z blyszczacej miedzi, ma ksztalt " +
        "sredniej wielkosci termy. Bez trudu mozesz siegnac do srodka.\n");
    
    add_prop(CONT_I_WEIGHT, 1000000);
    add_prop(CONT_I_MAX_WEIGHT, 100000000);
    add_prop(CONT_I_MAX_VOLUME, 100000000);
    add_prop(CONT_I_VOLUME, 1000000);
    add_prop(CONT_I_RIGID, 1);
    add_prop(OBJ_M_NO_GET, "Jak ty to sobie wyobrazasz? \n");

    set_alarm(1.0,1800.0,"reset_urny");
}

int
prevent_enter(object ob)
{
    object wlasc;
    
    wlasc = environment(ob);

    if ((!function_exists("create_armour", ob)) && 
        (!function_exists("create_weapon",ob)))    
    {
        tell_room(environment(this_object()),
           "Kaplan mowi: Jeno bron lub zbroje umiescic tam mozesz!\n",
            wlasc);
        wlasc->catch_msg("Probujesz wlozyc " + ob->short(wlasc, PL_BIE) +
            " do urny, lecz kaplan broni ci don dostepu, mowiac: " +
            "Jeno bron lub zbroje umiescic tam mozesz!\n");
        
        return 1;
    }
    
    if(ob->query_prop(OBJ_I_BROKEN))
    {
        tell_room(environment(this_object()), 
            "Kaplan mowi: Zamierzasz okpic Sigmara ?!\n", wlasc);
        wlasc->catch_msg("Probujesz wlozyc " + ob->short(wlasc, PL_BIE) +
            " do urny, lecz kaplan broni ci don dostepu, mowiac: " +
            "Zamierzasz okpic Sigmara ?!\n");
        return 1;
    }
    
    if(ob->query_prop(OBJ_I_WZIETY_Z_URNY))
    {
        tell_room(environment(this_object()),
            "Kaplan mowi: Odnoszac co wzi"+wlasc->koncowka("ales","elas")+", wlasciwie czynisz!\n");
        return 0;
    }        
    
    if(!wlasc) return 0;   
    ofiara(ob, wlasc);
    
    return 0;
}

int
prevent_leave(object ob)
{
    object wlasc;
    
    wlasc = this_player();

    if(function_exists("create_weapon",ob))
    {   
        if(wlasc->query_prop(GRACZ_WZIAL_BRON))
        {
            tell_room(environment(TO),"Kaplan krzywi sie i kiwa glowa mowiac: " +
                "Ostaw to w spokoju! Sigmar nie lubi pazernych!\n",wlasc);
            wlasc->catch_msg("Probujesz wziac " + ob->short(wlasc, PL_BIE) +
            " z urny, lecz kaplan krzywi sie i kiwa glowa mowiac: " +
                "Ostaw to w spokoju! Sigmar nie lubi pazernych!\n");
            return 1;
        }

        wlasc->add_prop(GRACZ_WZIAL_BRON, 1);
        
        ob->add_prop(OBJ_I_WZIETY_Z_URNY, 1);
        
        return 0;
        
    }    
    
    if(function_exists("create_armour",ob)) 
    {
        if(wlasc->query_prop(GRACZ_WZIAL_ZBROJE))
        {
            tell_room(environment(TO),"Kaplan krzywi sie i kiwa glowa mowiac: " +
                "Ostaw to w spokoju! Sigmar nie lubi pazernych!\n",wlasc);
            wlasc->catch_msg("Probujesz wziac " + ob->short(wlasc, PL_BIE) +
            " z urny, lecz kaplan krzywi sie i kiwa glowa mowiac: " +
                "Ostaw to w spokoju! Sigmar nie lubi pazernych!\n");
            return 1;
        }     

        wlasc->add_prop(GRACZ_WZIAL_ZBROJE, 1); 
    
        ob->add_prop(OBJ_I_WZIETY_Z_URNY, 1);
        
        return 0;
    }
    return 0;    
}
    
void
ofiara(object cos, object ktos)
{
        tell_room(environment(ktos),"Kaplan kiwa glowa z aprobata.\n");
        ktos->catch_msg("Czujesz ze twoja ofiara nie pozostala niezauwazona " +
            "przez Bogow, a twe doswiadczenie wzroslo nieznacznie.\n");
        ktos->add_exp(10 + random(10), 1);
}

void
reset_urny()
{
    seteuid(getuid());
    
    if(!a1 || !(E(a1) == this_object()))
    {
        a1 = clone_object(NPATH + "bronie/toporrdza.c");
        a1 -> move(this_object());
    }
    if(!a2 || !(E(a2) == this_object()))
    {
        a2 = clone_object(NPATH + "bronie/mieczrdza.c");
        a2 -> move(this_object());
    }
    if(!a3 || !(E(a3) == this_object()))
    {
        a3 = clone_object(NPATH + "bronie/sztyletrdza.c");
        a3 -> move(this_object());
    }
    if(!w1 || !(E(w1) == this_object()))
    {
        w1 = clone_object(NPATH + "zbroje/kolczugardza.c");
        w1 -> move(this_object());
    }
    if(!w2 || !(E(w2) == this_object()))
    {
        w2 = clone_object(NPATH + "zbroje/tarczardza.c");
        w2 -> move(this_object());
    }
    if(!w3 || !(E(w3) == this_object()))
    {
        w3 = clone_object(NPATH + "zbroje/helmrdza.c");
        w3 -> move(this_object());
    }
    set_alarm(0.2,0.0,"zlamasy_won");
}    
    
void
zlamasy_won()
{
    if(a1->query_prop(OBJ_I_BROKEN)) a1->remove_object();
    if(a2->query_prop(OBJ_I_BROKEN)) a2->remove_object();
    if(a3->query_prop(OBJ_I_BROKEN)) a3->remove_object();
    if(w1->query_prop(OBJ_I_BROKEN)) w1->remove_object();
    if(w2->query_prop(OBJ_I_BROKEN)) w2->remove_object();
    if(w3->query_prop(OBJ_I_BROKEN)) w3->remove_object();
}
     