
/* Plik:        wodz.c
 * Autor:       Kaes
 * Data:        98
 * Opis:        wodz w wiosce slepych jak sie wezmie questa to pomoze wyjsc
 */

inherit "/d/Imperium/std/monster.c";
#include "kaes.h"

#define   PLAYER_I_DOSTAL_ZADANIE5_NULN  "_player_i_dostal_zadanie5_nuln"

object gracz;
int zajety;

void ile_dosw_ring(object who);
void oddaj_rzecz(object ob, object from);
void oddal_ring(object from);
void oddal_list(object from);
void ile_dosw_list(object who);

void
create_monster()
{
    ustaw_nazwe(({"jen","jena","jenowi","jena","jenem",
      "jenie"}), ({"jeny","jenow","jenom","jeny",
      "jenami","jenach"}), PL_MESKI_OS);

    dodaj_przym("stary", "starzy");
    dodaj_przym("przygarbiony","przygarbieni");
    set_long("Ten stary, przygarbiony mezczyzna wyglada tak, jakby nosil ogromny "+
      "ciezar na swoich barkach. Jest straszliwie chudy, a jego rece sie "+
      "trzesa. Dlugie, biale wlosy opadaja na ramiona, czesciowo przyslaniajac "+
      "szrame za uchem. Kuleje na jedna noge, a gdy mowi jego glos jest cichy "+
      "i smutny.\n");
    ustaw_odmiane_rasy(PL_CZLOWIEK);

    set_stats(({35, 24, 45, 60, 65, 70}));

    set_skill(SS_DEFENCE, 10 + random(10));
    set_skill(SS_UNARM_COMBAT, 10 + random(10));
    set_skill(SS_CLIMB, 15);
    set_skill(SS_PARRY, 15);

    add_prop(CONT_I_WEIGHT, 60000);
    add_prop(CONT_I_HEIGHT, 155);

    add_ask(({"pomoc","zadanie","prace","wyjscie"}), VBFC_ME("quest_hint"));
    add_ask(({"grobowiec","grob", "pierscien"}), VBFC_ME("ring_hint"));
    add_ask("doline", VBFC_ME("dolina_hint"));

    set_default_answer(QCIMIE(this_object(),PL_MIA) + " odpowiada: Niestety " +
        "nie jestem w stanie ci w tym pomoc.\n");

    set_chat_time(3);
    add_chat("Juz nam nikt nie pomoze.");
    add_chat("Wszyscy sie tak boja...");
    add_chat("Co my teraz zrobimy?");
    add_chat("Niech bedzie przeklety...");

    set_act_time(3);
    add_act("emote wzdycha smutno.");
    add_act("emote siada zrezygnowany na krzesle.");
    add_act("emote przygladza swoje wlosy.");
    add_act("emote lapie sie za zgarbione plecy.");
    add_act("emote mowi cos po cichu.");

remove_prop(NPC_M_NO_ACCEPT_GIVE);
}

void
add_introduced(string imie)
{
    set_alarm(2.0,0.0,"return_intro", imie);
}

varargs void
return_intro(string kto)
{

    command("przedstaw sie " + find_player(kto)->query_real_name(PL_CEL));
}
varargs string          
quest_hint(int faza)    
{



    if (faza)
    if (!present(gracz, environment(this_object())))
    {
        command("powiedz No trudno, widocznie nie chcial mi pomoc.");
        command("westchnij");
        zajety=0;
        return "";
    }
    switch(faza)
    {
        case 0: if(zajety)
                  {
                    command("powiedz Chwileczke, daj mi skonczyc.");
                    return"";
                  }
        
            gracz = this_player();
            if (gracz->test_bit("imperium", 0, 7))
            {
                command("emote przygladza reka wlosy.");
                command("emote mowi: Dziekuje ci, ale juz nam pomogles.");
                command("emote usmiecha sie przyjaznie. ");
                return "";
            }

            if (gracz->query_prop("_kaes_07_chce_wyjsc_z_doliny_"))
            {
               command("powiedz Pospiesz sie, czas ucieka!");
               return "";
            }
           
   
   zajety = 1;
           
            command("emote podnosi sie szczesliwy. ");
            command("emote mowi: Tak! Ty mozesz nam pomoc!");

            set_alarm(4.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 1: 
            command("emote mowi: Potrzebujemy kogos odwaznego, silnego i "+
             "gotowego na wyzwania.");
            set_alarm(4.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 2:
            command("emote ciagnie dalej: Wiesz juz zapewne, jak wyglada nasza "+
             "sytuacja w wiosce. Zyjemy od wiekow odcieci od swiata w kompletnej "+
             "ciemnosci, gdyz zgodnie z nasza wiara kazde dziecko w swoje "+
             "czwarte urodziny pozbawione jest, przynajmniej czesciowo, wzroku ...");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 3:
            command("emote mowi: Nasze zycie jest proste, nie mamy wiele "+
               "wymagan. Problemy zaczynaja sie chlodna pora ... dawniej zwana noca.");
            command("emote krzywi sie lekko z bolu.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 4:
            command("emote mowi: Wszyscy mieszkancy wioski znikaja i ich "+
              "miejsce zajmuja potwory. Nie mam pojecia czemu sie tak dzieje, "+
              "a ja juz wielokrotnie otarlem sie o smierc z ich reki.");
            command("emote wzdycha ciezko.");
            set_alarm(5.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 5:
            command("emote mowi: Wiele lat temu w nasze progi zawital pewien "+
              "dziwny czlowiek. Powiedzial, ze wybawic nas moze jedynie "+
              "pewien pierscien, znajdujacy sie w jego posiadaniu. Niestety...");
            command("emote marszczy twarz probujac przywolac odlegle wspomnienia.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 6:
            command("emote mowi: Nie przezyl nocy, a jego ciala nigdy nie znalezlismy. "+
            "Mieszkancy sa zbyt wielkimi tchorzami zeby mi pomoc!");
            command("emote podnosi glos.");
            set_alarm(2.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 7:
            command("emote usmiecha sie ironicznie.");
            command("emote mowi: Jesli nam pomozesz, bedziemy ci wiele zawdzieczac!");
            command("emote osuwa sie zmeczony na poslanie.");
            gracz->add_prop("_kaes_07_chce_wyjsc_z_doliny_", 1);
            zajety = 0;
            break;
    }
    return "";
}

varargs string
ring_hint()
{
    command("emote mowi zniecierpliwiony: Nic ci o nim nie powiem.");
    command("emote uspokaja sie: Sam niewiele wiem.");
    command("emote usmiecha sie szeroko.");
    return"";
}

varargs string
dolina_hint()
{
    command("emote mowi: Zostaw mnie juz, zamiast pytac lepiej bys pomogl.");
    return"";
}


void
enter_inv(object ob, object from)
{
   ::enter_inv(ob, from);

    if(!from) return;    

    if(function_exists("create_heap",ob))
    {
        command("usmiechnij sie");
        return;
    }    

    if(ob->id("_list_do_jena_"))
    {
       set_alarm(1.0, 0.0, &oddal_list(from));
       return; 
    } 

   if(ob->id("_kaes_pierscien_zelazny_dla_slepych_"))
   {
       set_alarm(1.0, 0.0, &oddal_ring(from));
       return;
   }
   set_alarm(1.0, 0.0, &oddaj_rzecz(ob, from));
   return;
}

void
oddaj_rzecz(object ob, object from)
{
    string what, who;

    what = lower_case(ob->query_ustaw_nazwe());
    who = from->query_real_name();
    command("emote mowi: Po co mi to?");
    //command("emote oddaje ci przedmiot z powrotem.");
    command("daj " + ob->query_nazwa(3) + " " + from->query_nazwa(2));
}

void
oddal_ring(object from)
{
   string who,
   what;

   who = from->query_real_name();
   if(!from->query_prop("_kaes_07_chce_wyjsc_z_doliny_"))
   {
      command("emote mowi: O Bogowie! Pomogles nam! Dziekuje ci.");
      return;
   }
   command("emote mowi rozradowany: Znalazles pierscien! Wynagrodze ci to!");
   ile_dosw_ring(from);
   command("emote wychodzi z domku.");
   this_object()->remove_object();
}

void
ile_dosw_ring(object who)
{
   int xp_base = 5500;
   if (who->test_bit("imperium", 0, 7))
   {
      who->catch_msg("To milo, ze mi pomogles raz jeszcze.\n");
      return;
   }

   xp_base -= (who->query_prop("_kaes_byl_nad_jeziorem_i_juz_ogladal_") ? 0 : 2000);

   who->catch_msg("Czujesz sie bardziej doswiadczony.\n");
   who->add_exp(xp_base, 0);
   who->set_bit(0, 7);
   
   seteuid("silvy");
   
   write_file("/d/Imperium/private/questlog/0_7.log",
              ctime(time()) + ": " + who->query_name() + ", " + xp_base
            + " xp\n");
   return;
}

string
query_presentation()
{
    return"Jen, Medrzec i Opiekun, czlowiek";
}


void
oddal_list(object from)
{
   string who,
   what;
   
   who = from->query_real_name();
   
   if (!from->query_prop(PLAYER_I_DOSTAL_ZADANIE5_NULN))
   {
      command("emote mowi: O, moj list. Musialem go zgubic."); 
      return;
   }
   command("emote mowi: List do mnie? Dziekuje ci serdecznie.");
   ile_dosw_list(from); 
   return;
}

void
ile_dosw_list(object who)
{

   int xp_base = 400;
 
   if (who->test_bit("imperium", 0, 8))
   { 
      who->catch_msg("To znowu ty ? Nie nauczysz sie zbyt wiele robiac w kolko to samo.\n");
      return;
   }
   command("emote mowi: Kto to mogl do mnie napisac?");

   who->catch_msg("Czujesz sie troszke bardziej doswiadczony.\n");
   who->add_exp(xp_base, 0); 
   who->set_bit(0, 8);

   seteuid("silvy");
   write_file("/d/Imperium/private/questlog/0_8.log",
              ctime(time()) + ": " + who->query_name() + ", " + xp_base
            + " xp\n");
   return;
}

