inherit "/std/container";

#include <exec.h>
#include <pl.h>
#include <stdproperties.h>
#include <macros.h>
#include "ryc_zak.h"

#define LO " lezy na ziemii ogluszony"

int
lokacja(object ob);

string *Imiona;
object Ogluszony;

void
create_container()
{
    add_prop(CONT_I_RIGID, 1);
    add_prop(CONT_I_IN, 1);
}

void
init()
{
    add_action("dobij", "dobij");
    ::init();
}

void
ustaw_cialo(object kogo)
{
    string *przym;
    string *pprzym;
    int tmp;

    Ogluszony = kogo;
    add_prop(CONT_I_MAX_VOLUME, kogo->query_prop(CONT_I_MAX_VOLUME));
    add_prop(CONT_I_MAX_WEIGHT, kogo->query_prop(CONT_I_MAX_WEIGHT));
    ustaw_shorty(({"@@q_short:" + file_name(TO) + "|0", 
		       "@@q_short:" + file_name(TO) + "|1",
		       "@@q_short:" + file_name(TO) + "|2",
		       "@@q_short:" + file_name(TO) + "|3",
		       "@@q_short:" + file_name(TO) + "|4",
		       "@@q_short:" + file_name(TO) + "|5"}),
		 ({"", "", "", "", "", ""}), PL_NIJAKI_NOS);

    ustaw_nazwe (({"cialo", "ciala", "cialu", "cialo", "cialem", "ciele"}),
		 ({"ciala", "cial", "cialom", "ciala", "cialami", "cialach"}), 
		 PL_NIJAKI_NOS);

    set_long("@@q_long");
    
    add_prop(OBJ_I_NO_GET, "Zostaw " + kogo->koncowka("go! On", "ja! Ona", "je! Ono") +
	     " jeszcze zyje!");
}

string
q_short(mixed a)
{
    return query_nazwa(atoi(a)) + " nieprzytomnego " + 
	Ogluszony->query_imie(TP, PL_DOP);
}

string
q_long()
{
    return Ogluszony->long(TP);
}

int
dobij(string str)
{
    mixed *oblist;
    int tmp;

    notify_fail ("Dobij kogo?\n");
    
    if (!stringp (str) )
	return 0;
    
    if (!parse_command (str, INV (find_object (RZ_OGL_ROOM) ), "%l:" + PL_BIE, oblist) )
	return 0;
    
    tmp = oblist[0];
    oblist = filter (oblist, lokacja);

    if (!sizeof (oblist) )
	return 0;

    if (tmp >= 0 && tmp != 1)
    {
	notify_fail ("Kogo konkretnie chcesz dobic?\n");
	return 0;
    }

    tmp = tmp >= 0 ? tmp : -tmp;
    if (tmp > sizeof(oblist) )
	return 0;
    tmp--;
    
    // Silvy tutaj dodaj jakis opis ze TP dobija oblist[tmp]
    oblist[tmp]->query_prop (RZ_O_PARALIZ)->kill_and_remove(TP);
    return 1;
}

int
lokacja(object ob)
{
    if (objectp (ob) && ENV (TP) == ENV (ob->query_prop (RZ_O_CIALO) ) )
	return 1;
    return 0;
}
    
