
/* Plik       :      zoltan.c
 * Autor      :      Flex
 * Data       :      10.12.97
 * Last Update:      11.12.97
 * Opis       : Npc - daje : questa, expy, wskazowki.
 * 
 */

#include <silvy.h>

inherit "/d/Imperium/std/monster";

#include <ss_types.h>
#include <stdproperties.h>
#include <macros.h>
#include <wa_types.h>

#define PLAYER_I_DOSTAL_QUEST_ZOLTANA     "_player_i_dostal_quest_zoltana" 
#define PLAYER_I_WYGRAL_GRE               "_player_i_wygral_gre_caena_"
#define PLAYER_I_DOSTAL_QUEST_CAENA       "_player_i_dostal_quest_caena" 

void
create_monster()
{
   ustaw_nazwe( ({"zoltan", "zoltana", "zoltanowi", "zoltana", "zoltanem",
                 "zoltanie"}),({"","","","","",""}), PL_MESKI_OS);

   dodaj_przym("rudobrody","rudobrodzi");
   dodaj_przym("niewysoki","niewysocy");

   set_gender(G_MALE);

   add_prop(IMPERIUM_LIVE_I_NULN_CITIZEN,1);
   
   ustaw_odmiane_rasy(PL_CZLOWIEK);

   set_long("Jest to niewysoki mezczyzna, wygladajacy na znudzonego. Stoi lekko  " +
      "przygarbiony rozgladajac sie wokol. " +
      "Sposrod innych, moze na pierwszy rzut oka dostojniejszych, " +
      "silniejszych, wyroznia go jego odzienie. Wojownik ten zapewne nie " +
      "dba o luksusy, ale jego rynsztunek budzi podziw wsrod zebranych w izbie. " +
      "No i ta broda, ruda broda zapleciona w warkoczyki sprawia, ze jej " +
      "wlasciciel wyglada na doswiadczonego woja.\n");
   
   set_stats(({60,55,65,50,55,70}));

   set_skill(SS_WEP_KNIFE, 50 + random(20));
   set_skill(SS_DEFENCE, 30 + random(20));
   set_skill(SS_PARRY, 35 + random(30));
   set_skill(SS_AWARENESS, 50);
   
   add_ask(({"przygode", "przygody", "zadanie", "zarobek", "pieniadze", "prace"}),
      VBFC_ME("przygoda_odpowiedz"));
   add_ask(({"medalion","historie","opowiesc"}),
      VBFC_ME("medalion_odpowiedz"));
   add_ask(({"rycerza","Caena", "caena"}),VBFC_ME("caen_odpowiedz"));
   set_default_answer(VBFC_ME("odpowiedz_standardowa"));
                     
   set_act_time(21);
   add_act("splun");
   add_act("przestap");
   add_act("powiedz Jest tu chetny do zarobku?");
   add_act("emote niecierpliwie oczekuje swego kufla piwa.");
   add_act("emote spoglada w kierunku wyjscia.");
   add_act("emote przywoluje barmana.");
   add_act("emote wladczym glosem przemawia: Co ty mi tu za dyrdymaly " +
           "pleciesz. Piwa! Znajdz mi kogos do pracy!");
   add_act("powiedz Nie chcialby ktos tu zarobic?");
   add_act("powiedz Mam prace dla kogos kto lubi przygody? Jest chetny?");
   add_act("emote wscieklym wzrokiem spoglada wokolo i powiada: Same " +
            "moczymordy, nikogo godnego zaufania i zadnego na tyle " +
            "odwaznego by ze mna porozmawial lub sie zmierzyl?");
   
   remove_prop(NPC_M_NO_ACCEPT_GIVE);
   
   setuid();
   seteuid(getuid());

   add_weapon(NPATH + "bronie/sztylet3.c");
   add_armour(NPATH + "zbroje/helm2.c");
   add_armour(NPATH + "zbroje/kaftan3.c");
}


void
add_introduced(string imie)
{
    set_alarm(2.0,0.0,"return_intro", imie);
}

varargs void 
return_intro(string kto)
{
    object gracz=find_player(kto);
    
    /* Przedstawia sie tylko graczom - w ten sposob unikamy zapetlenia. */

    if (objectp(gracz)) 
       command("przedstaw sie " + OB_NAME(gracz));
}

string
odpowiedz_standardowa()
{
     command("emote spoglada na ciebie przez chwile.");
     command("powiedz Nie mam pojecia o co ci tak naprawde chodzi.");
     return "";
}     

string
przygoda_odpowiedz()
{
   if (TP->test_bit("imperium", 0, 16))
   {
      command("emote mruczy cos pod nosem.");
      command("emote zwraca sie do ciebie z wyrazem dezaprobaty na twarzy.");
      command("powiedz Niestety nie nadajesz sie do tego zadania.");
	return"";
   }
   else
   command("emote marszczy czolo pograzajac sie w zamysleniu.");
   TP->add_prop(PLAYER_I_DOSTAL_QUEST_ZOLTANA, 1);
       command("szepnij " + TP->query_real_name(PL_CEL) +
           " To zadanie wymaga nielada odwagi, ale mysle, ze dasz sobie rade. " +
           "Mam pewna niesprawdzona informacje o pojawieniu sie w miescie " +
           "rycerza imienem Caen. Kiedys dawno, dawno temu razem wedrowalismy " +
           "w poszukiwaniu przygod, lecz on okazal sie niewdziecznym, " +
           "zasmarkanym, ... hmmm ... ale do rzeczy. Jesli przyniesiesz mi medalion, " +
           "ktory zwykl nosic przy sobie jam gotow sowicie ci to wynagrodzic. " +
           "Historia tego medalionu jest dluga i zawila, jest w niej " +
           "duzo zla, zla i nienawisci ale to osobny rozdzial, " +
           "inna opowiesc."); 
	return"";
}

string
medalion_odpowiedz()
{
   if (this_player()->query_prop(PLAYER_I_DOSTAL_QUEST_ZOLTANA))
   {
   command("emote rozgladnal sie nieufnie po sali.");
   command("szepnij Cii...");
   command("emote szepcze: Cicho to powazna sprawa i tu nie moge mowic " +
           "o wszystkim.");
   command("rozgladnij sie badawczo");
       command("szepnij " + TP->query_real_name(PL_CEL) +
          " Medalion to prastary przedmiot nalezacy niegdys to wielkich magow, " +
          "pieczolowicie chroniony w niedostepnych zakatkach tajemniczych krain. " +
          "Niestety pewnego dnia, nie znam dokladnie przyczyn, jeden z magow " +
          "postanowil wyruszyc w swiat w poszukiwaniu - jak mowia legendy - " +
          "'nieistniejacego metalu', wzial klejnot i inne magiczne rzeczy, " +
          "do teraz nie wiadomo dokladnie jakie, i wyruszyl w swiat. " +
          "Wszelka wiesc o nim zaginela. Ja i wtedy jeszcze moj 'przyjaciel' - " +
          "Caen dotarlismy do nieznanych nikomu kresow globu i po wielkich trudach " +
          "w srodku ogromnej gory pelnej ogni znalezlismy - udalo sie nam " +
          "wyrwac z lap wscieklych bestii broniacych szkatuly - skarb, " +
          "no i ten klejnot.");
	return"";   
      }
     else
     {
     command("emote marszczy brwi.");
     command("emote wstaje, wyraznie poruszony.");
     command("emote spluwa na podloge.");
     command("powiedz Ciekawski sie znalazl, nie wsciubiaj nosa w nie swoje sprawy!");
     return"";
     }
}


string
caen_odpowiedz()
{
   if (this_player()->query_prop(PLAYER_I_DOSTAL_QUEST_ZOLTANA))
   {
       command("emote spoglada na ciebie z niesmakiem.");
       command("splun");
       command("szepnij " + TP->query_real_name(PL_CEL) +
           " Tak, dobre pytanie i masz szczescie, ze pytasz dzisiaj bo " +
           "wczoraj policzylbym ci za nie gnaty. "+
           "Caen, ta 'zmija' w ludzkiej skorze, to wcielenie demona, " + 
           "ach jak on potrafi zalezc za skore i wykorzystac do swych celow. " +
           "Ale i on nie jest bez wad, slabych punktow. Lubi dobre karczmy, " +
           "piwo i hazard. Zapewne teraz siedzi w ktorejs z 'jaskin hazardu' " +
           "i rozpowiada jak to wywiodl w pole Zoltana naiwniaka. Jednym slowem,"+
           " Caen zasluguje na to, by ktos porachwal mu kosci. Zawszec to jednak " +
           "moj kamrat i smierci mu nie zycze. Najlepiej by bylo, gdybys odzyskal " +
           "medalion bez rozlewu krwi, no chyba ze utracisz mu zab jeden lub dwa.");
       command("zasmiej sie diabel");
     }
     else
     {
       command("beknij");
       command("emote ze znudzeniem w oczach spoglada na ciebie.");
       command("powiedz Powiedz, czego ty ode mnie chcesz, co?");
     }
     return"";
}

string
pomoc_odpowiedz()
{
       object gracz = this_player();
    
        /* sprawdzamy czy gracz nas slucha jeszcze */
    if (!present(gracz, environment(this_object())))
        {
            command("powiedz Poczekaj jeszcze nie skoczylem...");
            command("emote wzrusza ramionami.");
            command("emote wraca do pracy.");
            return "";
        }

    command("emote ze znudzeniem spogada po sali.");
    command("powiedz Tak, ale to ja ciebie prosze o pomoc w dostarczeniu mi medalionu. " +
           "Czyzbys jeszcze szukal czyjejs pomocy do wykonania tego zadana?");
    return"";
}

void
calculate_experience(object who)
{
   int xp_base = 3000;
   
   if (who->test_bit("imperium", 0, 16))
      {
      who->catch_msg("Dobra robota ale bez nagrody tym razem.\n");      
      return;
   }
   
   xp_base -= (who->query_prop(PLAYER_I_WYGRAL_GRE)      ? 0 : 2000);
   
   who->catch_msg("Ta przygoda sprawila, ze zyskal" +
   	who->koncowka("es","as") + " nowe doswiadczenie.\n");
   
   who->add_exp(xp_base, 0);
   who->set_bit(0, 16);
   
     write_file("/d/Imperium/private/questlog/0_16.log",
              ctime(time()) + ": " + who->query_name() + ", " + xp_base
            + " xp\n");  

   return;
}

void
dajemy_expy(object from)
{
      if (!from->query_prop(PLAYER_I_DOSTAL_QUEST_ZOLTANA))
      {
      command("powiedz Oh! .. Dziekuje ci. Ladniutki, " +
          "pasuje tej tam dziwce na brzuszek, nie uwazasz?");
      command("emote wyglada na niezadowolonego.");
      command("powiedz On nie jest prawdziwy to tandetna podroba!");
      return;      
      }   
   command("emote jest zadowolony z widoku medalionu.");
   command("powiedz Musimy to uczcic!");
   calculate_experience(from);
   
   command("emote spoglada na wszystkich ze smutkiem, zegna sie i wychodzi.");
   remove_object();
}

void
give_it_back(object ob, object from)
{
   command("emote cedzi przez zeby: Nie prosilem cie o to!");
   command("powiedz Masz to tu spowrotem.");
   command("daj " + ob->query_nazwa(PL_BIE) + " " + from->query_real_name(PL_CEL));
}

void
enter_inv(object ob, object from)
{
   ::enter_inv(ob, from);
   if(!from) return;
   if(ob->id("_medalion_zoltana_"))
   {
      set_alarm(1.0, 0.0, &dajemy_expy(from));
      return;
   }
   set_alarm(1.0, 0.0, &give_it_back(ob, from));
   return;
}

string
query_presentation()
{
    return"Zoltan Thinny, czlowiek";
}
