
/* Plik:        kap_vere.c
 * Autor:       Silvy
 * Data:        28.10.97
 * Last Update: 09.01.98
 * Opis:        Kaplan w swiatyni Vereny w Nuln.
 */
 
inherit "/d/Imperium/Nuln/std/npc.c";
#include "silvy.h"

#define QUEST_PROP "_live_i_dostalem_questa_od_averiego"
#define PLAYER_I_ZNALAZL_KLUCZ_SKAVENOW "_player_i_znalazl_klucz_skavenow"
#define PLAYER_I_ZNISZCZYL_OLTARZ "_player_i_zniszczyl_oltarz"
#define PLAYER_I_ZROBIL_QUEST_AVEREGO "_player_i_zrobil_quest_averego"

object gracz;
int zajety;
int zrobiony = 0;

void ile_doswiadczenia(object who);

void
create_mieszczanin_nuln()
{
    ustaw_jak_daleko(3);
    ustaw_czy_wraca(1);
 
    ustaw_imie(({"avery","averego","averemu","averego","averym","averym"}),
        PL_MESKI_OS);
    dodaj_nazwy(({ "kaplan", "kaplana", "kaplanowi", "kaplana",
                   "kaplanem", "kaplanie" }), ({ "kaplani",
                   "kaplanow", "kaplanom", "kaplanow", "kaplanami",
                   "kaplanach" }), PL_MESKI_OS);

    set_gender(G_MALE); 
    ustaw_odmiane_rasy(PL_CZLOWIEK);
    dodaj_przym("przygarbiony","przygarbieni");
    dodaj_przym("otyly","otyli");

    set_long("Ten otyly mezczyzna o rumianej twarzy jest najprawdopodobniej " +
        "najwyzszym ranga z zamieszkujacych swiatynie Vereny mnichow. Ubrany jest w " +
        "jasny, przepasany grubym sznurem habit i lekkie sandaly. Wyglada, ze lata mlodosci " +
        "ma juz dawno za soba, co potwierdza jego przygarbiona sylwetka. Mimo to, twarz " +
        "ma czerstwa i zdrowa, rozjasniona szczerym usmiechem.\n");

    set_stats(({40,38,46,76,80,49}));

    add_prop(IMPERIUM_LIVE_I_NULN_CITIZEN,1);
    
    set_skill(SS_DEFENCE, 20 + random(5));
    
    set_act_time(15 + random(7));
    add_act("emote usmiecha sie szczerze.");
    add_act("emote mowi: Niechaj blogoslawienstwo Vereny bedzie z toba.");
    add_act("emote spaceruje po sali w zamysleniu.");
    add_act("emote mowi: Nasza swiatynia to prawdziwa perla w Nuln.");
    add_act("emote zanosi sie suchym kaszlem.");
    add_act("emote szepce cos pod nosem.");
    add_act("emote patrzy na ciebie, jakgdyby cos rozwazajac.");
    add_act("emote mowi: Przydalby sie ktos znajacy sie na wojaczce.");
    add_act("emote mowi: Miasto jest w niebezpieczenstwie!");
    
    set_cact_time(5);
    add_cact("emote przeklina cie w imie Vereny.");
    add_cact("emote krzyczy: Pomocy!");
    add_cact("emote krzyczy: Straze! Na pomoc!");
    add_cact("emote probuje wymknac sie w jakis sposob. Bez skutku.");
    add_cact("emote krzyczy: Czymze ci zawinilem ?!");

    set_default_answer(QCIMIE(TO,PL_MIA) + " odpowiada: Niestety " +
        "nie wiem, o czym mowisz.\n");

    add_ask(({"pomoc","zadanie","prace"}), VBFC_ME("quest_hint"));
    add_ask(({"kreatury","kryjowke","skavenow"}), VBFC_ME("skaven_hint"));
    add_ask(({"oltarz", "oltarz"}), VBFC_ME("oltarz_hint"));
    add_ask(({"nagrode","zaplate"}), VBFC_ME("zaplata"));
}

string
query_presentation()
{
    return"Avery Schell, Przelozony na Ksiegach i Glowny Kaplan Swiatynii Vereny, czlowiek";
}


varargs void 
return_intro(string kto)
{
    command("przedstaw sie " + find_player(kto)->query_real_name(PL_CEL));
}
// Dwie powyzsze funkcje pozwalaja naszemu elfowi przedstawiac sie.

void
add_introduced(string imie)
{
    set_alarm(2.0,0.0,"return_intro", imie);
}

varargs string          /* varags oznacza, ze nie trzeba podawac wszystkich */
quest_hint(int faza)    /* argumentow. Jesli nie poda sie, to faza = 0 */
{

/* Wpierw zapamietujemy gracza w zmiennej, bo w alarmach this_player()
 * nie dziala
 */
    
    
    if(zrobiony)
    {
        command("emote mowi: Dziekuje, ktos mi juz pomogl.");
        return"";
    }    
        
/* Za kazdym razem, gdy ma powiedziec jakas kwestie, sprawdzamy, czy gracz
 * jeszcze go slucha ... :-)
 */ 
    if (faza)
    if (!present(gracz, environment(this_object())))
    {
        command("powiedz Poszedl sobie, a wygladal" + koncowka("","a") + 
            " tak obiecujaco. Szkoda.");
        command("westchnij");
        zajety=0;
        return "";
    }

    switch(faza)
    {
        case 0: /* Zaczyna gadac. Sprawdzamy, czy gracz zrobil questa, itd. */
            if(zajety)
              {
                command("powiedz Chwileczke, daj mi skonczyc.");
                return"";
              }
            gracz = this_player();
            
            if (gracz->test_bit("imperium", 0, 11))
            {
                command("emote mowi: A, to ty. Milo cie znow widziec.");
                command("emote mowi: Dziekuje ci za checi, ale pomogles mi "
                  + "juz wystarczajaco.");
                command("emote usmiecha sie.");

                return "";
            }
            
            if (gracz->query_prop(QUEST_PROP))
            {
               command("powiedz Mam ci wyjasnic sprawe jeszcze raz? No dobrze.");
            }
   
   zajety = 1;

            command("emote mowi: Ciesze sie, ze chcesz mi pomoc. I to nie tylko " +
                "mi, ale takze wszystkim mieszkancom Nuln.");

            set_alarm(4.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 1: /* kontunacja gadki */
            command("emote mowi: Doszly mych uszu niepokojace wiadomosci.");
            set_alarm(4.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 2:
            command("emote wyjasnia: W kanalach pod miastem, w glebokich " +
                "podziemnych kryptach zauwazono twory Chaosu.");
            command("emote wzdycha smutno.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 3:
            command("emote mowi: Z informacji ktore posiadam sa to " +
                "szczuroludzie, wyznawcy Rogatego Szczura.");
            command("emote drapie sie za uchem.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 4:
            command("emote mowi: Ludzie zwa ich takze skavenami.");
            set_alarm(5.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 5:
            command("emote mowi: Wiem, ze gdzies tam, w zaulkach kanalow, " +
                "maja oni swa mroczna swiatynie.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 6:
            command("emote mowi: Jej sercem jest oltarz. On musi zostac zniszczony!");
            command("emote patrzy na ciebie z nadzieja.");
            set_alarm(2.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 7:
            command("emote mowi: Jesli tego dokonasz, nie bede oszczedzal na nagrodzie.");
            gracz->add_prop(QUEST_PROP, 1);     /* zaznaczamy sobie, ze gracz   */
                                        /* uslyszal to co trzeba        */
            zajety = 0;
            break;
    }
    return "";


}

varargs string
skaven_hint(int faza)
{

    switch(faza)
    {
     case 0:
   if(zajety)
   {
     command("powiedz Chwileczke, daj mi skonczyc.");
     return"";
   }
   zajety = 1;    
       command("emote mowi: Strzez sie tych stworow!");
      set_alarm(4.0,0.0, "skaven_hint", (faza + 1));
      break;

     case 1:
       command("emote mowi: Sa one smiertelnymi wrogami wszystkiego, co " +
            "nie podaza sciezka Chaosu.");
      set_alarm(7.0,0.0, "skaven_hint", (faza + 1));
      break;

     case 2:
       command("emote mowi drzacym glosem: Sa biegli w walce i nie stronia " +
           "od metod takich jak trucizna.");
       command("emote wzdryga sie.");    
      set_alarm(7.0,0.0, "skaven_hint", (faza + 1));
      break;


     case 3:
       command("emote konczy zlowieszczym glosem: Pamietaj! Miej sie na " +
           "bacznosci.");
     zajety = 0;
      break;
    }
    return"";
}

varargs string
oltarz_hint(int faza)
{
    switch(faza)
    {
     
     case 0:
   if(zajety)
   {
     command("powiedz Chwileczke, daj mi skonczyc.");
     return"";
   }
   zajety = 1;
        command("emote mowi: Oltarz jest centrum calego kultu.");
        command("emote dodaje: Jesli zostanie zniszczony, mamy szanse na " +
            "obrone przed Chaosem.");
      set_alarm(4.0,0.0, "oltarz_hint", (faza +1));
      break;

     case 1:
  
       command("emote zastanawia sie przez moment.");
      set_alarm(7.0,0.0, "oltarz_hint", (faza +1));
      break;

     case 2:

       command("emote mowi: Musi on znajdowac sie gdzies w samym centrum ich " +
           "kryjowki.");
      set_alarm(7.0,0.0, "oltarz_hint", (faza +1));
      break;

     case 3:

       command("emote mowi: Strzez sie, bo z pewnoscia szczuroludzie nie " +
           "dopuszcza cie do niego tak latwo.");
      zajety = 0;
      break;

    }
    return"";
}

string
zaplata()
{
   gracz = this_player();
   
   if(!this_player()->query_prop(PLAYER_I_ZNISZCZYL_OLTARZ))  
   {
       command("emote mowi: Za co mam ci dac nagrode ?");
       return"";
   }       
   if(gracz->query_prop(PLAYER_I_ZROBIL_QUEST_AVEREGO))
   {
       command("emote mowi: Nagrode juz dostal"+koncowka("es","as")+
           ". Czego chcesz wiecej?");
       return"";
   }
   if (gracz->test_bit("imperium", 0, 11))
   {
       gracz->catch_msg("To milo, ze mi pomogl"+koncowka("es","as")+" raz jeszcze.\n");
       return"";
   }
   if(!this_player()->query_prop(QUEST_PROP))
   {
       command("emote mowi: Skad wiedzial"+koncowka("es","as")+" ze zalezy mi na zniszczeniu tego " +
          "siedliska Chaosu ?"); 
       return"";   
   }
   command("emote mowi: A wiec oltarz jest juz zniszczony. Brawo!");
   command("emote mowi: Dziekuje, oto twoja nagroda.");
   
   ile_doswiadczenia(gracz);
   
   command("emote jest wyraznie zadowolony.");
   zrobiony = 1;
   gracz->add_prop(PLAYER_I_ZROBIL_QUEST_AVEREGO,1);
   set_alarm(1800.0,0.0,"reset_questa");
   return"";
}

void
reset_questa()
{
    zrobiony = 0;
}    

void
ile_doswiadczenia(object who)
{
   int xp_base = 7500;
   
   xp_base -= (who->query_prop(PLAYER_I_ZNALAZL_KLUCZ_SKAVENOW) ? 0 : 2000);
   
   who->catch_msg("Czujesz sie bardziej doswiadczon" +
   	who->koncowka("y","a") + ".\n");
   who->add_exp(xp_base, 0);

   command("powiedz Oto twoja nagroda!");
   write(query_Imie(this_object(),PL_MIA) + " daje ci 10 zlotych monet.\n");
   MONEY_MAKE_GC(10)->move(who);
   
   who->set_bit(0, 11);
   seteuid("silvy");
   write_file("/d/Imperium/private/questlog/0_11.log",
              ctime(time()) + ": " + who->query_name() + ", " + xp_base
            + " xp\n");
}
