/* Formularz wyplaty ze skarbca... */

inherit "/std/object";
#include <pl.h>
#include <stdproperties.h>
#include <cmdparse.h>
#include "mith.h"

#define TO this_object()
#define TP this_player()
#define ENTP environment(TP)
#define C(str) capitalize(str)

#define SKARBIECOB (ZAMEK + "skarbiec")

#define TYPY ({"miedz","srebro","zloto","mithryl"})
#define OPIS2 ({"miedzi","srebra","zlota","mithryle"})
#define OPIS3 ({"miedzi","srebra","zlota","mithryli"})

int ile;
string typ;
string kto,komu;
int wystawiony=0;

create_object()
{
   ustaw_nazwe(({ "kartka", "kartki", "kartce", "kartke", "kartka",
       "kartce" }), ({ "kartki", "kartek", "kartkom", "kartki",
       "kartkami", "kartkach" }), PL_ZENSKI);
   
   dodaj_nazwy(({"formularz","formularza","formularzowi","formularz",
   		 "formularzem","formularzu"}),
   	       ({"formularze","formularzy","formularzom","formularze",
   	         "formularzami","formularzach"}),PL_MESKI_NZYW);
   dodaj_nazwy(({"upowaznienie","upowaznienia","upowaznieniu",
   		 "upowaznienie","upowaznieniem","upowaznieniu"}),
   	       ({"upowaznienia","upowaznien","upowaznieniom",
   		 "upowaznienia","upowaznieniami","upowaznieniach"}),PL_NIJAKI_NOS);
   
   add_name("rzformularz");
   
   dodaj_przym("nieduzy","nieduzi");
   
   set_long("@@qlong");
   
   add_prop(OBJ_I_VALUE, 0);
   add_prop(OBJ_I_WEIGHT, 5);
   add_prop(OBJ_I_VOLUME, 1);
}

enter_env(object ob, object from)
{
   if (!wystawiony&&interactive(ob))
      {
         if (SKARBIECOB->sprawdz(ob->query_real_name()))
            kto=(ob->query_real_name(PL_BIE));
      }
   :: enter_inv(ob,from);
}

int
wystaw(string str)
{
   mixed oblist;
   int ile_tu,pom;
   string typ_tu;
   object ob;
   
   notify_fail("Wystaw [upowaznienie] <komu> na <ile>.\n");
   
   if (TP->query_real_name(PL_BIE)!=kto) 
      return notify_fail("Takie upowaznienie nie bedzie honorowane.\n");
   
   if (!str) return 0;
   
   parse_command(str,ENTP,"[upowaznienie] %l:"+PL_CEL + " 'na' %d %s",oblist,ile_tu,typ_tu);
   
   if (!typ_tu) return 0;
   
   if (ile_tu<=0) return notify_fail("Nie mozesz wystawic upowaznienia na taka sume!\n");
   
   oblist=NORMAL_ACCESS(oblist,0,0);
   
   if (!sizeof(oblist)) return 0;
   
   if (sizeof(oblist)>1) return notify_fail("Upowaznienie mozesz wystawic tylko jednej osobie.\n");
   
   ob=oblist[0];
   
   if ((pom=(SKARBIECOB->co_to_za_typ(typ_tu,ile_tu)))<0)
      return 0;
   
   komu=ob->query_real_name(PL_CEL);
   ile=ile_tu;
   typ=TYPY[pom];
   wystawiony=1;
   
   TO->move(ob,1);
   write("Wystawiles " + ob->short(TP,PL_CEL) + " upowaznienie na sume " +
   	SKARBIECOB->opis_mon(typ,ile)+ ".\n");
   ob->catch_msg(capitalize(TP->short(ob,PL_MIA)) + " daje ci " + 
       short(ob,PL_BIE) + ".\n");
   tell_room(ENTP,QCIMIE(TP,PL_MIA) + " daje " + QIMIE(ob,PL_CEL) + " " +
       QSHORT(TO,PL_BIE) + ".\n",({TP,ob}));
   
   return 1;
}

init()
{
   ::init();
   add_action(wystaw,"wystaw");
}

string
qlong()
{
   string str=(wystawiony)?"Upowaznienie to jest wystawione " + C(komu) + " " +
   	"na sume " + SKARBIECOB->opis_mon(typ,ile):"Jest to pusty formularz upowaznienia " +
   	"na pobranie pieniedzy ze skarbca Zakonu Simgara Mlotodzierzcy";
   	
   return str+".\n";
}

string
kto_wystawil()
{
   return kto;
}

string
komu_wystawione()
{
   return komu;
}

string
query_typ()
{
   return typ;
}

int
query_ile()
{
   return ile;
}

int
query_wystawione()
{
   return wystawiony;
}