#include <macros.h>
#include <stdproperties.h>
#include <cmdparse.h>

inherit "/std/object.c";

int waga_empty = 300;
int poj_nacz = 100;
int alc_perc = 0;
int pelne = 0;
string liquid_dop = "";
string liquid_long = "";
string long_desc = "";
string drink_msg = "";

int waga_naczynia();

void
create_kielich()
{
}

nomask void
create_object()
{
    create_kielich();
    
    set_long("@@dlugi_opis");

    add_prop(OBJ_I_WEIGHT, waga_naczynia);
    add_prop(OBJ_I_VALUE, 0);
}
int
waga_naczynia()
{
    return waga_empty + pelne * poj_nacz;
}

void
set_empty_weight(int i)
{
    waga_empty = i;
}

void
set_full_vol(int i)
{
    add_prop(OBJ_I_VOLUME, i);
}

void
set_liquid_vol(int i)
{
    poj_nacz = i;
}

void
set_long_desc(string str)
{
    long_desc = str;
}

int
query_liquid_vol()
{
    return poj_nacz;
}

int
query_full()
{
    return pelne;
}

string
dlugi_opis()
{
    return long_desc + (pelne ? liquid_long : "\n");
}

void
fill_it(int alc_perc1, string liquid_dop1, 
	string liquid_long1, string drink_msg1 = 0)
{
    alc_perc = alc_perc1;
    liquid_dop = liquid_dop1;
    liquid_long = liquid_long1;
    drink_msg = drink_msg1;

    pelne = 1;
}

void
update_short()
{
    if (!pelne)
	usun_shorty();

    ustaw_shorty(({query_nazwa(PL_MIA) + " " + liquid_dop,
		       query_nazwa(PL_DOP) + " " + liquid_dop,
		       query_nazwa(PL_CEL) + " " + liquid_dop,
		       query_nazwa(PL_BIE) + " " + liquid_dop,
		       query_nazwa(PL_NAR) + " " + liquid_dop,
		       query_nazwa(PL_MIE) + " " + liquid_dop}),
		 ({query_pnazwa(PL_MIA) + " " + liquid_dop,
		       query_pnazwa(PL_DOP) + " " + liquid_dop,
		       query_pnazwa(PL_CEL) + " " + liquid_dop,
		       query_pnazwa(PL_BIE) + " " + liquid_dop,
		       query_pnazwa(PL_NAR) + " " + liquid_dop,
		       query_pnazwa(PL_MIE) + " " + liquid_dop}),
		 query_real_rodzaj(0, 0) - 1);
}

int
drink(string str)
{
    object *oblist;

    notify_fail("Napij sie z czego?\n");
    
    if (!str)
	return 0;

    oblist = PARSE_THIS(str, "'sie' 'z' %i:" + PL_DOP);
    
    if (sizeof(oblist) > 1)
    {
	notify_fail("Mozesz pic jedynie z jednej rzeczy na raz.\n");
	return 0;
    }

    if (sizeof(oblist) == 0 || oblist[0] != this_object())
	return 0;
    
    if (!pelne)
    {
	notify_fail (capitalize(short(PL_MIA)) + " jest pusciutenk" + 
		     koncowka("i", "a", "ie") + ".\n");
	return 0;
    }

    if (this_player()->drink_max() - this_player()->query_soaked() < poj_nacz)
    {
	notify_fail("Nie wypijesz juz ani kropelki wiecej.\n");
	return 0;
    }

    if (!this_player()->drink_alco(alc_perc * poj_nacz / 100, 0))
    {
	notify_fail("Ten trunek jest zbyt mocny, nie dasz juz rady tego wypic!\n");
	return 0;
    }

    this_player()->drink_soft(poj_nacz, 0);

    usun_shorty();

    if (drink_msg)
	write(drink_msg);
    else
	write("Unosisz " + short(PL_BIE) + " do ust i oprozniasz " +
	      koncowka("go", "ja", "je") + " niespiesznie, rozkoszujac sie smakiem " +
	      liquid_dop + ".\n");

    say(QCIMIE(this_player(), PL_MIA) + " unosi " + short(PL_BIE) + " do ust i oproznia " +
	koncowka("go", "ja", "je") + " niespiesznie, rozkoszujac sie smakiem " +
	liquid_dop + ".\n");
    
    pelne = 0;

    return 1;
}

void
init()
{
    add_action(drink, "napij");
    ::init();
}

string
query_recover()
{
    return 0;
}
