/*
   Objekt zum Eintragen von Raeumen die Zaubertraenke enthalten beim
   potionmaster. 
*/

#include <wizlevels.h>
#include <properties.h>
#include <language.h>

inherit "std/thing";

int dump();

int secure()
{
  if (!previous_object()) return 0;
  if (geteuid(previous_object())==ROOTID) return 1;
  if (geteuid(previous_object()) != geteuid(this_interactive())) return 0;
  if (this_interactive() != this_player()) return 0;
  if (!ARCH_SECURITY) return 0;
  return 1;
}

void create()
{
  if (!clonep(this_object())) return;
  ::create();
  SetProp(P_SHORT, "Potion-Tool");
  SetProp(P_LONG, 
     "Ein Tool zum Eintragen von Raumen in den Potionmaster.\n"+
     "Folgende Befehle gibt es:\n"+
     "ptadd <liste>     Addiert den ZT im Raum in Liste <liste>\n"+
     "                  und aktiviert ihn gleichzeitig.\n"+
     "ptset <liste>     Aktiviert den ZT im Raum und setzt ihn in\n"+
     "                  die Liste <liste>.\n"+
     "ptchange <nummer> Ersetzt den ZT <nummer> durch den ZT im Raum.\n"+
     "ptact             Aktiviert einen deaktivierten ZT in seiner\n"+
     "                  bisherigen Liste.\n"+
     "ptdeact           Deaktiviert den ZT im Raum aus der ZTListe\n"+
     "                  und verschiebt ihn nach 'deaktivierte ZTs'.\n"+
     "ptinfo [para]     kein para:   Zeigt Infos ueber den ZT im aktu-\n"+
     "                               ellen Raum.\n"+
     "                  int para:    Zeigt Infos zum ZT para an.\n"+
     "                  string para: Zeigt ZT-Infos des Spielers para.\n"+
     "ptdump            Erzeugt ein Dump der aktuellen ZTListe und\n"+
     "                  speichert diesen ab.\n\n");
  SetProp(P_NAME, "PTool");
  SetProp(P_GENDER, NEUTER);
  AddId(({"tool", "ptool"}));
  SetProp(P_NODROP, 1);
  SetProp(P_AUTOLOADOBJ, 1);
  AddCmd("ptadd", "add");
  AddCmd("ptset", "setlist");
  AddCmd("ptchange", "changepath");
  AddCmd("ptact", "activate");
  AddCmd("ptdeact", "deactivate");
  AddCmd("ptinfo", "info");
  AddCmd("ptdump", "dump");
}

int add(string number)
{
  int nr, next, active;
  string room;
  if (!secure())
  { printf("Fehler: -1\n"); return -1; }
  if (!query_once_interactive(environment()))
  { printf("Fehler: -2\n"); return -2; }
  if (!number)
  { printf("Fehler: -3\n"); return -3; }
  sscanf(number, "%d", nr);
  if (!intp(nr))
  { printf("Fehler: -4\n"); return -4; }
  room = object_name(environment(environment(this_object())));
  next = "/secure/potionmaster"->AddPotionRoom(room,nr);
  if (next>0)
    printf("Raum in Gesamtliste eingetragen, Nummer: %d\n", next-1);
  else
  {
    printf("Raum konnte nicht eingetragen werden, Ergebnis: %d\n", next);
    return 1;
  }
  // Nicht mehr noetig, Arathorn, 2013-Mai-30
  //active = "/secure/potionmaster"->SetListNr(room, nr);
  if (active>=0)
  {
    printf("Raum aktiviert in Liste %d\n", nr);
    dump();
  }
  else
    printf("Fehler beim Aktivieren, Ergebnis: %d\n", active);
  return 1;
}

int changepath(string number)
{
  int nr,neu;
  string room;
  mixed roomold;
  if (!secure())
  { printf("Fehler: -1\n"); return -1; }
  if (!query_once_interactive(environment()))
  { printf("Fehler: -2\n"); return -2; }
  if (!number)
  { printf("Fehler: -3\n"); return -3; }
  sscanf(number, "%d", nr);
  if (!intp(nr))
  { printf("Fehler: -4\n"); return -4; }
  room = object_name(environment(environment(this_object())));
  roomold = "/secure/potionmaster"->GetFilenameByNumber(nr);
  if (roomold==-1)
  { printf("Fehler: -5\n"); return -5; }
  neu = "/secure/potionmaster"->ChangeRoomPath(roomold,room);
  if (neu>0)
    {
      printf("ZT %d durch aktuellen Raum ersetzt.\n", neu);
      dump();
    }
  else
    printf("ZT %d konnte nicht ersetzt werden, Ergebnis: %d\n", nr,neu);
  return 1;
}

int setlist(string number)
{
  int nr, next, active;
  string room;
  if (!secure())
  { printf("Fehler: -1\n"); return -1; }
  if (!query_once_interactive(environment()))
  { printf("Fehler: -2\n"); return -2; }
  if (!number)
  { printf("Fehler: -3\n"); return -3; }
  sscanf(number, "%d", nr);
  if (!intp(nr) || nr<0 || nr>7)
  { printf("Fehler: -4\n"); return -4; }
  room = object_name(environment(environment(this_object())));
  active = "/secure/potionmaster"->SetListNr(room, nr);
  if (active>=0)
  {
    printf("Raum aktiviert in Liste %d\n", nr);
    dump();
  }
  else
    printf("Fehler beim Aktivieren, Ergebnis: %d\n", active);
  return 1;
}

int activate()
{
  int nr, active;
  string room;
  
  if (!secure())
  { printf("Fehler: -1\n"); return -1; }
  if (!query_once_interactive(environment()))
  { printf("Fehler: -2\n"); return -2; }
  room = object_name(environment(environment(this_object())));
  active = "/secure/potionmaster"->ActivateRoom(room);
  if (active>=0)
    {
      printf("Raum aktiviert in Liste %d\n", active);
      dump();
    }
  else
    printf("Fehler beim Aktivieren, Ergebnis: %d\n", active);
  return 1;
}

int deactivate()
{
  int deactive;
  string room;
  
  if (!secure())
  { printf("Fehler: -1\n"); return -1; }
  if (!query_once_interactive(environment()))
  { printf("Fehler: -2\n"); return -2; }
  room = object_name(environment(environment(this_object())));
  deactive = "/secure/potionmaster"->DeactivateRoom(room);
  if (deactive>=0)
    {
      printf("Raum deaktiviert in Liste %d\n",deactive);
      dump();
    }
  else
    printf("Fehler beim Deaktivieren, Ergebnis: %d\n", deactive);
  return 1;
}

int info(string para)
{
  int info,nr;
  string s;
  object room,o;
  mixed m,*potions;
  if (!secure())
  { printf("Fehler: -1\n"); return -1; }
  if (!query_once_interactive(environment()))
  { printf("Fehler: -2\n"); return -2; }
  if (!para || para=="")
    {
      room = environment(environment(this_object()));
      info = "/secure/potionmaster"->HasPotion(room);
      if (info>=0)
        {
          printf("Raum hat ZT mit Nr:  %d\n\n",info);
          nr = "/secure/potionmaster"->GetListByNumber(info);
          if (nr>=0)
            printf("ZT aktiv in Liste:   %d\n\n",nr);
          else
            {
              nr = "/secure/potionmaster"->GetInactListByNumber(info);
              if (nr>=0)
                printf("ZT INaktiv in Liste: %d\n\n",nr);
              else
                printf("ZT INaktiv\n\n");
            }
          if (info>=0 && s=read_file("/secure/ARCH/ZT/"+info+".zt"))
            {
              write("Tip:\n"+s);
            }
        }
      else
        printf("Raum hat keinen ZT eingetragen.\n");
    }
  else
    if (sscanf(para,"%d",info)==1)
      {
        printf("ZT mit Nummer: %d\n\n",info);
        m = "/secure/potionmaster"->GetFilenameByNumber(info);
        if (m!=-1)
          {
            write("Filename: "+m+"\n\n");
            nr = "/secure/potionmaster"->GetListByNumber(info);
            if (nr>=0)
              printf("ZT aktiv in Liste: %d\n\n",nr);
            else
              {
                nr = "/secure/potionmaster"->GetInactListByNumber(info);
                if (nr>=0)
                  printf("ZT INaktiv in Liste: %d\n\n",nr);
                else
                  printf("ZT INaktiv\n\n");
              }
            if (info>=0 && s=read_file("/secure/ARCH/ZT/"+info+".zt"))
              {
                write("Tip:\n"+s);
              }
          }
        else
          write("Kein ZT mit dieser Nummer bekannt.\n");
      }
    else
      {
        write("Spieler "+capitalize(para)+"\n\n");
        if (o=find_player(para))
          {
            potions=sort_array(o->QueryProp(P_POTIONROOMS),#'>);
            if (sizeof(potions))
              {
                s="";
                for (nr=0;nr<sizeof(potions);nr++)
                  s+=potions[nr]+", ";
                write("Potionrooms:\n"+break_string(s[0..<3],78)+"\n");
              }
            else write("Spieler hat keine weiteren Potionrooms.\n");
            potions=sort_array(o->QueryProp(P_KNOWN_POTIONROOMS),#'>);
            if (sizeof(potions))
              {
                s="";
                for (nr=0;nr<sizeof(potions);nr++)
                  s+=potions[nr]+", ";
                write("Bekannte Potionrooms:\n"+
                      break_string(s[0..<3],78));
              }
            else write("Spieler hat keine bekannten Potionrooms.\n");
          }
        else
          write("Kein Spieler mit diesem Namen anwesend.\n");
      }
  return 1;
}

int dump()
{
  "/secure/potionmaster"->DumpList();
  printf("Liste wurde erzeugt.\n");
  return 1;
}

