/*
 *  Przedmiot gildiowy wynalazcow - skorzana torba na ramie
 *  Napisal : Vald 
 *  Data : 22.10.98
 *  Update : 23.10.98 14:09
 *  Last Update : ?
 */

inherit "/std/receptacle";


#define TP this_player()
#define TO this_object()
#define TORBA_SUBLOC "_torba_wynalazcy"
#define OBJ_I_WYNALAZEK "_obj_i_wynalazek"

#include <formulas.h>
#include <macros.h>
#include <stdproperties.h>
#include <wa_types.h>
#include <ss_types.h>

int worn = 0;

void
create_receptacle()
{
    ustaw_nazwe(({"torba","torby","torbie","torbe","torba","torbie"}),
                ({"torby","toreb","torbom","torby","torbami","torbach"}),
                 PL_ZENSKI);

    dodaj_przym("skorzany","skorzani");
    set_long("Skorzana torba oznacza twoja przynaleznosc do gnomich wynalazcow."
           + "Mozesz w niej przechowywac wynalazki, czesci do nich, oraz "
           + "narzedzia potrzebne do ich konstruowania. Pomoc dotyczaca gildii "
           + "uzyskasz wpisujaca \'? gnomy\'.\n");

    add_prop(CONT_I_RIGID, 0); 

    add_prop(CONT_I_CLOSED, 1);
    add_prop(CONT_I_MAX_WEIGHT,15000); 
    add_prop(CONT_I_MAX_VOLUME,25000); 

    add_prop(OBJ_M_NO_DROP,"Torba jest oznaka twojej przynaleznosci do"
       +" wynalazcow i nie moze byc ot tak sobie porzucona.\n"); 
    add_prop(OBJ_M_NO_STEAL,1);
    add_prop(OBJ_M_NO_SELL,"Torba jest oznaka twojej przynaleznosci do"
       +" wynalazcow i nie moze zostac sprzedana.\n");
    add_prop(OBJ_M_NO_GIVE,"Torba jest oznaka twojej przynaleznosci do"
       +" wynalazcow i nie moze byc przekazywany innym osobom.\n"); 


}

void
wear(object tp)
{
    TP->add_subloc(TORBA_SUBLOC, TO); 
    worn = 1;
    move(TP,TORBA_SUBLOC); /*do not display in inventory */
}

int
zaloz(string str)
{ 
    if (str != "torbe")
    {
        notify_fail("Co chcesz zalozyc? Moze torbe?\n");
        return 0;
    }

    if (!present(TO, TP))
    {
        notify_fail("Przeciez nie masz " + query_nazwa(PL_DOP) + " !\n");
        return 0;
    }

    if (worn)
    {
        notify_fail("Masz juz zalozona torbe na prawym ramieniu.\n");
        return 0;
    }

    if (member_array(TORBA_SUBLOC, this_player()->query_sublocs()) > -1)
    {
       notify_fail("Masz juz inna torbe na prawym ramieniu.\n");
       return 0;
    }
    wear(TP);
    write("Zakladasz "+short(PL_BIE)+" na prawe ramie.\n");
    say(QCIMIE(TP,PL_MIA)+" zaklada "+QSHORT(TO,PL_BIE)+" na prawe ramie.\n");
    return 1;
}

int
zdejmij(string str)
{ 
    if (str!="torbe")
    {
        notify_fail("Co chcesz zdjac?\n");
        return 0;
    }

    if (!present(this_object(), this_player()))
    {
        notify_fail("Przeciez nie masz " + query_nazwa(PL_DOP) + " !\n");
        return 0;
    }
    if (!worn)
    {
        notify_fail("Przeciez nie masz jej zalozonej na ramie!\n");
        return 0;
    }
    write("Zdejmujesz "+short(PL_BIE)+".\n");
    say(QCIMIE(TP,PL_MIA)+" zdejmuje "+QSHORT(TO,PL_BIE)+".\n");
    TP->remove_subloc(TORBA_SUBLOC);
    worn = 0;
    move(this_player());
    return 1;
}

void
leave_env(object dest, object old)
{
    old->remove_subloc(TORBA_SUBLOC);
    remove_prop(OBJ_M_NO_DROP);
    ::leave_env(dest, old);
}

public string
show_subloc(string subloc, object on, object for_obj)
{ 
    string data;
    
    if (subloc == TORBA_SUBLOC)
    {
        if (for_obj != on)
            data = "Nosi na prawym ramieniu " + short(for_obj, PL_BIE) + " oznaczajaca "
                 + "przynaleznosc do wynalazcow";
        else
            data = "Nosisz na prawym ramieniu " + short(for_obj, PL_BIE) + " oznaczajaca "
                 + "przynaleznosc do wynalazcow";

        return data+".\n";
    }
}

void
init()
{
    ::init();
    add_action(zaloz, "zaloz");
    add_action(zdejmij, "zdejmij");
}

public string
query_auto_load()
{
    return MASTER + ":";
}

int
query_torba_wynalazcow()
{
    return 1;
}

string
query_recover()
{
    return 0;
} 

int
prevent_enter(object ob)
{
    if (ob->query_prop(OBJ_I_WYNALAZEK))
        return 0;

    write("Do tej torby mozesz wkladac tylko wynalazki i czesci do nich...\n");
    return 1;
}

