/* 
 * Kompania Krogulca
 *
 * Copyright(C):    Khazzar (jedrekz@pascom.pl)
 * Data:            26.08.2003
 * 
 */

inherit "std/receptacle.c";
#include "def.h"

#define SKRZYNIA N_OBJ + "skrzynia_store"

mapping equipment = ([]);
int     restore_equipment();

void
create_container()
{
    ustaw_nazwe(({"skrzynia","skrzyni","skrzyni","skrzynie","skrzynia",
                  "skrzyni"}),
                ({"skrzynie","skrzyn","skrzyniom","skrzynie","skrzyniami",
                  "skrzyniach"}), PL_ZENSKI);

    dodaj_przym("solidny","solidni");
    set_long("Solidna skrzynia na ekwipunek.\n");

    add_prop(CONT_I_WEIGHT,50000);
    add_prop(CONT_I_MAX_WEIGHT,900000);
    add_prop(CONT_I_MAX_VOLUME,900000);
    add_prop(CONT_I_RIGID,1);
    add_prop(OBJ_M_NO_GET,"Skrzynia jest za ciezka.\n");

    setuid();
    seteuid(getuid());

    restore_object(SKRZYNIA);

    set_alarm(0.1, 0.0, "restore_equipment");
}


void
save()
{
    save_object(SKRZYNIA);
} 

void
load()
{
    restore_object(SKRZYNIA);
}

int
restore_equipment()
{
    int i,j;
    int ilosc    = m_sizeof (equipment);
    mixed sprzet = m_indices(equipment);

    for (i=0; i<ilosc; i++)
        for (j=1; j<=equipment[ sprzet[i] ]; j++)
        {
            clone_object(sprzet[i])->move(TO);
            equipment[ sprzet[i] ] = equipment[ sprzet[i] ] - 1;
            if (equipment[ sprzet[i] ] == 0)
                equipment=m_delete(equipment, sprzet[i]);
        }
    save();
    return 1;
}

void
enter_inv( object co, object skad )
{
    equipment[ MASTER_OB(co) ] = equipment[ MASTER_OB(co) ] + 1;
    save();
    ::enter_inv(co, skad);
}

void
leave_inv( object co, object dokad )
{
    if ( dokad )
    {
        equipment[ MASTER_OB(co) ] = equipment[ MASTER_OB(co) ] - 1;
        if (equipment[ MASTER_OB(co) ] == 0)
            equipment=m_delete(equipment, MASTER_OB(co));
        save();
    }
    ::leave_inv(co, dokad);
}
