// lampa
// napisane przez Alfena


#include "alfen.h"

inherit "/std/torch";
#include <stdproperties.h>
#include <pl.h>



int lampa_value();


void create_lampa(){
  ustaw_nazwe( ({"lampa", "lampy", "lampie", "lampe", "lampa", "lampie"}),
  	({ "lampy", "lamp", "lampom", "lampy", "lampami", "lampach"}),
  	PL_ZENSKI);
  set_short("Mosiezna lampa");
  set_long("Lampa jest zrobiana z cietego szkala, wzmocnionego mosieznym "+
     "szkieletem. Na samym dole znajduje sie pojemniczek na oliwe.\n");
     
}



nomask void create_torch(){
  add_prop(OBJ_I_LIGHT, 0);
  add_prop(OBJ_I_WEIGHT, 1500);
  add_prop(OBJ_I_VOLUME, 200);
  add_prop(OBJ_I_VALUE, lampa_value);
  
  set_time(1000);
  set_strength(1);
  set_value(70);
  
  create_lampa();
}


void reset_lampa(){
}


void init(){
  ::init();
  
  add_action("do_fill", "napelnij");  
}



int do_fill(string str){
  object o1, o2;
  string s1, wzor;
  
  wzor = " %o:" + PL_BIE + " %s 'z' %o:" + PL_DOP;
  if (!parse_command(str, all_inventory(this_player()), wzor, o1, s1 , o2)) {
    notify_fail ("Czym napelnic " + query_nazwa(PL_BIE) +
      "???\n");
    return 0;
  }
  
  if (o1!=this_object()) {
    notify_fail("Napelnic co????\n");
    return 0;
  }
  
  if (!o2->query_prop("_cont_i_contains_liquid_")) {
    notify_fail (capitalize(o2->query_nazwa(PL_MIA)) + " nie zawiera" +
       " oliwy.\n");
    return 0;
  }

  if (o2->query_liquid()[0]!="oliwa") {
    notify_fail(capitalize(query_nazwa(PL_BIE)) + " napelnia sie"+
      " raczej oliwa.\n");
    return 0;
  }
  
  if (o2->query_prop(CONT_I_CLOSED)) {
    notify_fail(capitalize(o2->query_nazwa(PL_MIA)) + " jest zamkniety.\n");
    return 0;
  }
  
  if (!o2->query_cuanitity_liquid()) {
    notify_fail(capitalize(o2->query_nazwa(PL_MIA)) + " jest pusty.\n");
    return 0;
  }
  
  if  (query_time(1)==query_max_time()) {
    notify_fail("Przeciez " + query_nazwa(PL_MIA) + " jest pelna.\n");
    return 0;
  }
  
  o2->sub_liquid(query_prop(OBJ_I_VOLUME)/4);  
  set_time_left(query_max_time());
  write("Napelniles " + query_nazwa(PL_BIE) + " oliwa z " + 
     o2->query_nazwa(PL_DOP) + ".\n");
  return 1;
}


nomask reset_torch(){
  reset_lampa();
}



int lampa_value(){
  return torch_value();
}


string query_lampa_recover(){
  return query_torch_recover();
}


void init_lampa_recover(string str){
  ::init_torch_recover(str);
}


nomask void init_torch_recover(string str){
  init_lampa_recover(str);
}



public void burned_out(){
  ::burned_out();
  remove_adj("wypalony");
}
