inherit "/cmd/std/command_driver";

#include "local.h"
#include <macros.h>
#include <stdproperties.h>

#define SOULDESC(x) (this_player()->add_prop(LIVE_S_SOULEXTRA, x))

string
get_soul_id()
{
   return "soul_alfena";
}

int
query_cmd_soul()
{
    return 1;
}

mapping
query_cmdlist()
{
    return ([
       "shadow"  : "do_shadow",
       "skopiuj" : "do_kopiuj",
       "ksztalt" : "do_ksztalt",
       "zapamietaj" : "do_zapamietaj",
       "przypomnij" : "do_przypomnij",
            ]);
}





int
do_kopiuj(string s)
{
  object ob, *pom;
  
  notify_fail("Kogo skopiowac?\n");
  if (!s)
    return 0;
  pom = users() - ({this_player()});
  if (!parse_command(s,pom," %o:"+PL_BIE,ob))
    return 0;
  this_player()->sh_kopiuj_osobe(ob);
  say("Oczy " + QIMIE(this_player(), PL_DOP) + " rozjarzyly sie na "+
    "chwile niebieska poswiata.\n");
  write("Ksztalt skopiowany.\n");  
  return 1;
}


int
do_ksztalt(string s)
{ 
  notify_fail("Ksztalt -/+.\n");
  if ((s!="+")&&(s!="-"))
    return 0;
  
  say("Kontury "+QIMIE(this_player(), PL_DOP)+" rozplywaja sie,"+
    " pochwili zlewajac sie w nowy ksztalt.\n");
  if (s=="-")
  {
    write("Znow jestes soba.\n");
    this_player()->sh_set_prawdziwy(1);
  }
  else
  {
    write("Przybrales zapamietany ksztalt.\n");
    this_player()->sh_set_prawdziwy(0);
  }
  return 1;
}


int
do_shadow(string s)
{
  notify_fail("Shadow -/+.\n");
  if ((s=="-")&&this_player()->query_alfen_shadow())
  {
    this_player()->remove_alfen_shadow();
    return 1;
  }
  if (s=="+")
  {
    setuid();
    seteuid(getuid());
    
    (clone_object("/d/Imperium/alfen/obj/alfen_shadow.c"))->
      shadow_me(this_player());
    return 1;
  }
  return 0;
}
  
  
int
do_zapamietaj(string s)
{
  notify_fail("Co zapamietac?\n");
  if ((s!="ksztalt")&&(this_player()->query_real_name()!="alfen"))
    return 0;
  this_player()->sh_zapisz_ksztalt();
  write("Ksztalt zapamietany.\n");
  say("Kontury "+QIMIE(this_player(), PL_DOP) + " lekko sie rozmyly.\n");
  return 1;
}


int
do_przypomnij(string s)
{
  notify_fail("Kogo mam sobie przypomniec?\n");
  if (!wildmatch("sobie *",s))
    return 0;
  write("Ksztalt odtworzony.\n");
  say("Postac "+QIMIE(this_player(),PL_DOP)+" rozjarzyla sie na chwile "+
    "nieziemskim blaskiem.\n");
  return this_player()->sh_odczytaj_ksztalt(explode(s," ")[1]);
}
