inherit "/std/object";

#include <stdproperties.h>
#include <macros.h>
#include <pl.h>
#include <cmdparse.h>

void
create_object()
{
  dodaj_nazwy(({"sniezka", "sniezki", "sniezce", "sniezke",
	"sniezka", "sniezce"}),
    ({"sniezki", "sniezek", "sniezkom", "sniezki",
       "sniezkom", "sniezkach"}), PL_ZENSKI);

  ustaw_shorty(({"sniezka", "sniezki", "sniezce", "sniezke",
	"sniezka", "sniezce"}),
    ({"sniezki", "sniezek", "sniezkom", "sniezki",
       "sniezkom", "sniezkach"}), PL_ZENSKI);

  set_long("Sniezka ta, jak kazda sniezka ulepiona jest ze sniegu. "+
	   "Mozna nia w kogos rzucic.\n");

  add_prop(OBJ_I_WEIGHT, 50);
  add_prop(OBJ_I_VOLUME, 51);
}

int
rozpusc()
{
  saybb ("Trzymana przez " + this_player()->query_Imie(this_player(), PL_BIE) +
        " sniezka rozpuszcza sie.\n");
  write ("Sniezka topi sie...\n");
  remove_object();
  
  return 1;
}

init()
{
  ::init();
  add_action("rzuc", "rzuc");
  set_alarm(30.0, 0.0, &rozpusc());
}

int
rzuc(string str)
{
  string person;
  object ob, *oblist, kto;
    
  if(!str)
    return notify_fail("Rzucic sniezka w kogo?\n");
/*    if(!sscanf(str, "sniezka w %s", person))
       return notify_fail("Rzucic sniezka w kogo?\n");
    if(!present(this_object(), this_player()))
       return notify_fail("Nie masz sniezki.\n");   
    ob=find_living(person);*/

  sscanf(str, "sniezka w %s", person);
  if (!parse_command(person, all_inventory(environment(this_player())),
		     "%i:" + PL_BIE, oblist) || !sizeof(oblist = NORMAL_ACCESS(oblist, 0,0)))
    {
      notify_fail("Nie widzisz zadnej takiej osoby.\n");
      
      return 0;
    }

  this_player()->set_obiekty_zaimkow(oblist);
  ob = oblist[0];   
                         
  if(!ob)
    return notify_fail("Rzucic sniezka w kogo?\n");
    
  write("Rzucasz sniezka w "+ ob->query_Imie(ob, PL_BIE) +".\n");
  tell_room(environment(this_player()), this_player()->query_cap_name() +
	    " przymierza sie do rzucenia sniezka w " +
	    ob->query_Imie(ob, PL_BIE) +".\n", ({this_player(), ob}));
  kto = this_player();
  call_out("hit", 1, ({ob, kto}) );

  return 1;
}

void
hit(object *tablica)
{
  int i;
  object tp, ob;
  ob = tablica[0];
  tp = tablica[1];
    
  if(!tp || !ob)
    return;

  i=random(6);
  if (i<3)
    {
      write("Sniezka minela "+ob->query_Imie(ob, PL_DOP)+" o mile. A niech to!\n");
      tell_object(ob, "Sniezka przelatuje obok twojego ucha. Uff... ale fart.\n");
      tell_room(environment(ob), "Jakas sniezka przelatuje ci nad glowa.\n",
		({tp, ob}));
      // this_object()->move(environment(ob));
      remove_object();
      return;
    }

  write("Plask! Trafiles "+ob->query_Imie(ob, PL_BIE)+" w tyl glowy.\n");
  tell_object(ob, "Auuc!! Sniezka rzucona przez "+ tp->query_Imie(ob, PL_BIE)+
	      " trafia Cie w tyl glowy.\n");
  tell_room(environment(ob), "Sniezka przelatuje z duza predkoscia i trafia "+
	    ob->query_Imie(ob, PL_BIE)+" w tyl glowy.\n", ({tp, ob}));
  remove_object();
  
  return;
}
