/* Aron */
inherit "/d/Imperium/std/room";    /* to jest testowy pokoj: bede na nim testowal */
                                   /* wszystkie moje genialne pomysly ;-))        */

#include <stdproperties.h>
#include <macros.h>
#include <ss_types.h>

#define TO this_object()
#define TP this_player()

#define LONG_OPIS_1 "Stoisz na polanie posrod dzikiej puszczy. Wszedzie "+ \
                    "dookola snuja sie kleby kleistej bialej mgly, ktora "+ \
                    "wciska sie pod ubranie zmieniajac je w mokra szmate. Na "+ \
                    "srodku polany stoi wielki glaz"

#define TABLICA "/d/Imperium/obj/tablica.c"
#define GORGO ""
#define WYJSCIE ""

#define HARD_FIND 50
#define HARD_PCHNIJ 50

int haslo, spr, open_close;

/* haslo = 0 blokuje wiekszosc funkcji                     */
 /* haslo = 1 pozwala na zmiane w opisie polany i glazu     */
 /* spr   = 1 pozwala na sklonowanie Starca                 */

int spr_haslo_fun (string str);
int nadchodzi_fun (string str);
int wyjscie_fun (string str);
int opis_exitu_fun (string str);
int open_close_fun (string str);

void reset_imperium_room() 
 {
  open_close=0;
  haslo=0;
  spr=0;
  add_prop(ROOM_I_LIGHT, 1);
 }

void create_imperium_room()
 {
  object ob, ob1, ob2;

   set_short("Polana");
   set_long("@@opis_polany_fun");
 
   add_exit("/d/Imperium/common/pp1.c","poludnie");
   add_exit("/d/Imperium/common/tech.c","polnoc");    
    
   add_item(("glaz"),"@@opis_glazu_fun");

   add_prop(ROOM_I_LIGHT, 1);

   ob=clone_object(TABLICA);
   ob->move(TO);

    set_event_time(500.0, 500.0);
    add_event("Z oddali dobiega cie tubalny chor wizow Imperium, nucacych przepiekna piesn ...\n" +
        "\n" +
        "Siewodnia praznik i wiesna\nJa slyszu smiech i galasa\nJa padbierzal skariej k aknu\nSmatriu na ulicu swaju ...\n\nJestes pod wrazeniem sily ich polaczonych serc i glosow ...\n");
    set_events_on(1);
/*   
   ob1 = clone_object("/d/Imperium/madej/monst/guard.c");
   ob1->move_living("west","/d/Imperium/workroom.c");
   ob2 = clone_object("/d/Imperium/madej/monst/guard.c");
   ob2->move_living("west","/d/Imperium/madej/workroom.c");
   ob1->team_join(ob2);
   */
 }

void init() 
 {
  add_action(spr_haslo_fun,"Imperium");
  add_action(spr_haslo_fun,"arachia");
  add_action(spr_haslo_fun,"szepnij arachia");
  add_action(spr_haslo_fun,"szepnij Imperium");
  add_action(nadchodzi_fun,"slowo"); 
  add_action(nadchodzi_fun,"powiedz slowo");
  add_action(wyjscie_fun,"lochy"); 
  add_action(wyjscie_fun,"dol");  
  add_action(opis_exitu_fun,"south");
  add_action(opis_exitu_fun,"s");
  add_action(open_close_fun,"pchnij ",1);
           ::init();
 }



int wyjscie_fun(string str)
 {
  if (open_close==1)
   {
/*    TP->move_living("xxx","/d/Imperium/madej/lasy/rozstaje.c");
  */  TP->move_living("west",WYJSCIE);
    return 1;
   }
  notify_fail("Nie widzisz tu lochow.");
  return 0;  
 }

int open_close_fun(string str)
 {
  write ("Stajesz przy kamieniu i mosno zapierasz sie nogami o ziemie "+
             " po czym zaczynasz calym sialem z wysilkiem napierac na zimna, "+
             "wilgotna skale.");
  say (QCTNAME(TP) +" ustawia sie w dogodnej pozycji i zaczyna pchac wielki "+
       "kamien.\n");
  if (TP->query_skill(SS_STR) > random(HARD_PCHNIJ))
   {
    write ("Z wielkim wysilkiem zaczynasz pchac potezny kamien "+
               "ktory powoli odsuwa sie odslaniajac schody prowadzace ku "+
               "glebina ziemi. Z otworu zaczyna wydostawac sie chlod, ktory "+
               "przenika twe cialo do glebi, paralizujac umysl i zmrazajac "+
               "dusze.");
    say (QCTNAME(TP) +" z wielkim wysilkiem pcha glaz ktory powoli zaczyna "+
         "odslaniac schody prowadzace ku glebia ziemi. Z dziury bije chlod "+
         "ktory paralizyje twa dusze i cialo.\n");
    open_close=1;
    return 1;                
   }
  write ("Z nadludzkim wysilkiem starasz sie pchnac ten wielki glaz, "+
               "jednak jest on zbyt ciezki, twe nogi slizgaja sie po ziemi, "+
               "jak po lodzie, nie dajac wystarczajacego oparcia.");
  say (QCTNAME(TP) +" sapie i steka, probujac pchnac glaz, jednak jego "+
      "wysilki spelzaja na niczym.\n");               
  if (haslo==1)
   {
    write ("Widzisz jak ze swiecacego napisu tryska waski strumien krwisto "+
               "czerwonego swiatla ktory trafia w twe cialo powodujac potworny "+
               "bol uniemozliwiajacy myslenie.");
    say (QCTNAME(TP) +" zostaje uderzony promieniem krwisto czerwonego swiatla, "+
        "ktore powoduje ze przez cale jego cialo przebiega spazm a z gardla wudobywa "+
        "sie cichy jek.\n");           
    TP->reduce_hit_point(100+random(100));    
   } 
  return 1;
 }

int nadchodzi_fun(string str) 
 {
  object ob1;
   if (!(spr==1))
    {
     notify_fail("Wypowiedziales magiczne slowo....i nic sie nie stalo.");
     return 0;
    }
   ob1 = clone_object(GORGO);
   ob1->move_living("xxx","/d/Imperium/madej/workroom.c"); 
   write("Wypowiadasz magiczne slowo....i poczules lekki dreszcz, "+
             "przebiegajacy."); 
   spr++;
   return 1;
 }

string opis_polany_fun() 
 {
  string opis;
   opis=LONG_OPIS_1;
 
 opis+=" Na polnocy znajduje sie pomiesczenie gdzie omaiwane sa sprawy"+
       " kodu domenowego , natomiast na poludniu znajduja pomieszczenia"+
       " z terminami wyznaczonymi dla posczegolnych zadan.\n";
      
  return opis;
 }
 
 
string opis_glazu_fun() 
 {
  if (haslo==1) 
   {
    haslo=0;
    spr=1;
    return (
 "Jest to stary, porosniety brunatnymi porostami glaz. Gdy mu sie przygladasz"+
 " zauwazasz wiekowe, niemal zatarte napisy wyryte na jego powierzchni, teraz"+
 " jednak emanuje z nich krwisto czerwona poswiata, a same slowo ulegly dziwnej"+
 " metamorfozie i teraz ukladajace sie w nastepujaca inwokacje:\n" +
 "O Przyjacielu i towarzyszu nocy, ty ktory radujesz sie ujadaniem psow i "+
 "przelana krwia, ktory wedrujesz miedzy grobami, posrod najglebszych cieni, "+
 "ktory pragniesz krwi i sprowadzasz na smiertelnikow dojmujaca zgroze, Gorgo,"+
 " Mormo, ksiezycu o tyciacach twarzy, spojrzyj przychylnie na nasze ofiary!");
   }
  return 
   "Jest to stary granitowy monolit, z jednej strony ociosany tworzac jakby "+
   "tablice gotowa do zapelnienia....Gdy spogladaszz bliska na jego ciemna "+
   "chropowata powierzchnie zauwazasz litery ktore zastaly wyryte wieki temu "+
   "i teraz sa skryte pod warstwa mchow. Przygladajac sie dluzej stwierdzasz "+
   "ze litery ukladaja sie w napis:\n'Szepnij nazwe swiata tego i znow "+
   "zerknij na mnie.'";
 } 

 int spr_haslo_fun(string str) 
  {
   if (haslo==1) 
    {
     notify_fail("Przyjrzyj sie znow Glazowi....\n");
     return 0;
    }
   haslo=1;
   write("Wypowiadasz cicho te magiczna nazwe bedaca kluczem i widziasz jak "+
             "woku glazu zaczyna emanowac slaba czerwona poswiata.");
   say(QCTNAME(TP)+" cos cicho szepta."); 
   environment(TP)->add_prop(ROOM_I_LIGHT, 2);
   return 1;
  } 
 
int opis_exitu_fun (string str)
 {
  if (TP->query_wiz_level()==35)
   {
    write("Rozplywasz sie we mgle....\n");
    say(QCTNAME(TP)+" powoli staje sie cieniem, ktory rozplywa sie we "+
                   "mgle....jeszcze przez chwile slychac jego kroki, az "+
                   "i one powoli cichna....znow jestes tylko ty i mgla...\n");
    TP->move_living("south","/d/Imperium/madej/workroom.c");                
    return 1;
   } 
  notify_fail("Gdy probujsz isc dalej w tym kierunku, czujesz jak w twych "+
            "trzewiach wzbiera jakis irracjonalny Strach....Jeszcze kilka "+
            "krokow i twe nogi bez udzialu woli zawracaja cie spowrotem "+
            "na polane.");
  say(QCTNAME(TP)+" po kilku krokach znika we mgle, aby pojawic sie "+
                        "znowu przy kamieniu, blady i caly w nerwach.\n");
  return 0;
 }
