inherit "/d/Imperium/Nuln/kanaly/kanal_room.c";
#include <std.h>
#include <macros.h>
#include "elear.h"
#include <stdproperties.h>
#include <ss_types.h>

int jest_pierscien = 1;
object ob;

#define ELEAR_KAN_I_WYLOWIL    "_elear_kan_i_wylowil"

int wedk (string s)
{
  if (!s)
  {
    notify_fail ("Co chcesz wylowic?\n");
    return 0;
  }
  if(!jest_pierscien)
  {
      notify_fail("Nie widzisz nic takiego.\n");
      return 0;
  }    
  if ((s=="pierscien") || (s=="pierscionek"))
  {
    if (!CAN_SEE_IN_ROOM(TP)) return notify_fail("Nie widzisz zadnego " +
    	(s=="pierscien"?"pierscienia":"pierscionka") + " w tych ciemnosciach.\n");
    if (present("wedka",TP))
    {
      if (TP->query_prop ("_ELEAR_KAN_I_WEDKUJE"))
      {
        write ("Caly czas to robisz.\n");
        return 1;
      }
      TP->add_prop ("_ELEAR_KAN_I_WEDKUJE",1);
      notify_fail("");
      switch (TP->query_prop ("_ELEAR_KAN_I_WEDKOWANIE"))
      {
        case 0 : write ("Przyklekasz i starasz sie wylowic pierscionek swoja prowizoryczna wedka.\n");
                 say (QCIMIE(TP,0)+" przykleka na brzegu kanalu i stara sie cos wylowic przy pomocy prowizorycznej wedki.\n");
                 set_alarm(6.0,0.0,"wedk2");
                 break;
        case 1 : write ("Przyklekasz i starasz sie wylowic pierscionek. Tym razem masz nowa technike...\n");
                 say (QCIMIE(TP,0)+" przykleka na brzegu kanalu i z zawzietym wyrazem twarzy stara sie cos wylowic ze sciekow.\n");
                 set_alarm(8.0,0.0,"wedk2");
                 break;
        case 2 : write ("Przyklekasz i znow starasz sie wylowic ten maly, wstretny pierscionek...\n");
                 say (QCIMIE(TP,0)+", wkurzon"+plpl("y","a")+", przykleka na brzegu kanalu i uparcie stara sie cos wylowic...\n");
                 set_alarm(10.0,0.0,"wedk2");
                 break;
      }
    return 0;
    }
    {
      notify_fail ("Rekami go nie wylowisz - scieki sa zbyt wstretne.\n");
      return 0;
    }
  }
  {
    notify_fail ("To byloby klopotliwe.\n");
    return 0;
  }
}

void wedk2 ()
{
  TP->remove_prop ("_ELEAR_KAN_I_WEDKUJE");
  switch (TP->query_prop ("_ELEAR_KAN_I_WEDKOWANIE"))
  {
    case 0 : write ("Nie udalo ci sie. Pierscionek to wyplywa, to znow pograza "
    		   +"sie w sciekach. Chyba dasz sobie spokoj...\n");
    	     say (QCIMIE(TP,0)+", zniechecon"+plpl("y","a")+", wstaje nic nie wylowiwszy.\n");
    	     TP->add_prop ("_ELEAR_KAN_I_WEDKOWANIE",1);
    	     break;
    case 1 : write ("Znowu nic. Ten pierscien albo jest zaczarowany, albo ktos "
    		   +"siedzi w tym szlamie i sie z toba bezczelnie bawi...\n");
    	     say (QCIMIE(TP,0)+" wstaje i marszczy groznie brwi. Znow nic nie wylowil"+plpl("","a")+".\n");
    	     TP->add_prop ("_ELEAR_KAN_I_WEDKOWANIE",2);
    	     break;
    case 2 : if (TP->test_bit(0,1))
               {
                 write ("Nie, to bez sensu. Nie jestes w stanie tego wstretnego pierscionka "
                 +"wydobyc. Moze pozwol to zrobic komus innemu - juz raz przeciez ci sie "
                 +"ten pierscien wylowic udalo.\n");
                 say (QCIMIE(TP,0)+" zrezygnowan"+plpl("y","a")+" wstaje i otrzepuje kolana. "
                 +"Je"+plpl("go","j")+" wyraz twarzy mowi jedno - 'daruje sobie'...\n");
               }
               else
               {
                 write ("Tak! Tym razem sie udalo. Pierscionek zwisa bezradnie na haczyku "
      		   +"twojej wedki. Nacieszywszy sie tym widokiem chowasz go do kieszeni.\n");
      	         say (QCIMIE(TP,0)+" nagle wydaje radosny okrzyk i z duma podnosi swoja "
      	         +"prowizoryczna wedke, na ktorej haczyku blyszczy zloty pierscionek.\n");
      	         TP->remove_prop ("_ELEAR_KAN_I_WEDKOWANIE");
      	         TP->add_prop(ELEAR_KAN_I_WYLOWIL,1);
      	         ob = clone_object (NULN+"/obj/kpierscien.c");
      	         ob -> move (TP);
                 jest_pierscien = 0;
      	       }
      	     break;
  }
}

reset_imperium_room()
{
  jest_pierscien = 1;
}

int wez (string s)
{
  if(!jest_pierscien)
  {
      notify_fail("Nie widzisz nic takiego.\n");
      return 0;
  }    
  
  if ((s=="pierscionek") || (s=="pierscien"))
  {
    write ("Zdajesz sobie sprawe, ze aby wziac ten pierscionek, musial"+plpl("","a")
    +"bys wsadzic reke w te smierdzaca, kotlujaca sie zupe kalu, moczu, wymiocin,"
    +" scierwa i pomyj? Za zadne skarby tego nie zrobisz.\n");
    return 1;
  }
  {
    return 0;
  }
}

string niecka()
{
  string s;
  s = "Do tej niecki scieki spadaja z gory, z wysokosci"
  +" wystarczajacej, by wszelkie nieczystosci wymieszaly sie dokladnie. Nie masz pojecia,"
  +" po co to skonstruowano, tym bardziej, ze scieki zdaja sie po wymieszaniu"
  +" smierdziec jeszcze okropniej.\n";
  if (jest_pierscien)
  {
    s = s + "Co jakis czas nad powierzchnie sciekow wynurza sie cos blyszczacego."
    +" Przy kolejnym wynurzeniu sie tego obiektu zauwazasz, ze jest to zloty pierscionek!"
    +" Moze udaloby sie go wylowic?\n";
  }
  " Problem tkwi w tym, ze za zadne swietosci nie zblizysz reki do tej kotlujacej"
  +" sie zupy kalu, moczu, wymiocin, scierwa i pomyj.\n";
  return s;     
}

int sluch (string s)
{
   write ("Slyszysz szum sciekow, ktore, spadlszy z brzegu rynny pare metrow nad Toba"
   +" rozchlapuja sie w szerszej niecce tuz kolo Ciebie. Poza tym nie jestes w stanie duzo wiecej uslyszec.\n");
   say (QCNAME(this_player())+" nastawia uszu, probujac z szumu sciekow wylowic jakis"
   +" bardziej znajomy dzwiek.\n");
   return 1;
}

string opiskanalu()
{
    string s = "Stoisz u podstawy kilkumetrowej sciany, z ktorej krawedzi, pare metrow"
    +" nad Twoja glowa spadaja lub splywaja nieczystosci stale i plynne. U stop"
    +" owej sciany znajduje sie poszerzone zaglebienie w rynnie sciekowej, w do ktorego"
    +" wszystkie scieki wpadaja z glosnym pluskiem i bulgotem. Z niecki tej wyplywa"
    +" struga sciekow o bardziej ujednoliconej konsystencji; caly szlam plynie powoli"
    +" kretym korytarzem w kierunku polnocnym.\n"
    +"Na scianie, po ktorej plyna scieki, zauwazasz kilkanascie klamr, po ktorych"
    +" mozesz sie wspiac na gore.\n";
    return s;
}

void create_imperium_room()
{
  ::create_imperium_room();
  set_short ("U stop sciany");
  set_long ("@@opiskanalu");
  
  add_exit (ELEPATH+"/kan_6.c","polnoc",0,1,0);
  add_exit (ELEPATH+"/kan_5u.c","gora",0,1,0);
    
  add_item (({"drabinke","klamry"}),"Widzisz kilkanascie klamr wbitych w sciane"
  +" niecaly metr od Twoich stop. Nie wygladaja na kruche - sa wykonane z grubych, wygietych"
  +" pretow - choc sa troche oslizle, to nie powinno byc problemow z dostaniem sie na gore.\n");
  add_item (({"niecke","zaglebienie"}),"@@niecka");
  
}

int skok (string s)
{
  write ("Przez chwile rozwazal"+plpl("e","a")+"s mozliwosc skapania sie w sciekach,"
  +" lecz zakonczylo sie to tym, ze zwymiotowal"+plpl("e","a")+"s prosto na jedna"
  +" ze scian pomieszczenia.\n");
  say (QCNAME(this_player())+" najwyrazniej nie wytrzymal"+plpl("","a")+" smrodu sciekow"
  +" i zwymiotowal"+plpl("","a")+" prosto na sciane.\n");
  return 1;
}

void init()
{
  add_action (skok,"wskocz");
  add_action (skok,"skocz");
  add_action (skok,"zanurkuj");
  add_action (skok,"plywaj");
  add_action (wedk,"wylow");
  add_action (wez,"wez");
  ::init();
}
