
/* Plik:        wojt.c
 * Autor:       Silvy
 * Data:        15.05.98
 * Last Update: 15.05.98
 * Opis: Wojt wioski Ciemny Staw - bedzie dawal zadanie obrony wioski i nagradzal
 *       za jego wykonanie
 */
 
inherit "/d/Imperium/std/monster.c";
// Dziedziczymy standardowego monster.c Imperium.
#include "local.h"
// Definicje.
#define PLAYER_I_DOSTAL_ZADANIE_WOJTA  "_player_i_dostal_zadanie_wojta"
#define PLAYER_I_ZABIL_TROLLA 	       "_player_i_zabil_trolla"
#define ADMIN                          "/d/Imperium/Kraina/STAW/admin"

object gracz;
// Ten obiekt bedzie nam potrzebny pozniej, musimy go zadeklarowac.
void ile_doswiadczenia(object who);
int zajety=0;

void
create_monster()
{
// Standardowa funkcja npca.
    ustaw_imie(({"robin","robina","robinowi","robina","robinem","robinie"}),
         PL_MESKI_OS);
    
    dodaj_nazwy(({"wojt","wojta","wojtowi","wojta","wojtem","wojcie"}),
        ({"wojtowie","wojtow","wojtom","wojtow","wojtami","wojtach"}),
        PL_MESKI_OS);
    
    dodaj_nazwy(({"schulbach","schulbacha","schulbachowi","schulbacha",
        "schulbachem","schulbachu"}),
        allocate(6), PL_MESKI_OS);
   
    dodaj_przym("wysoki","wysocy");
    dodaj_przym("krzywousty","krzywousci");

    set_long("Masz przed soba wojta wioski. Jest bardzo wysoki i postawny, wyglad "+
        "psuja mu jednak usta, nienaturalnie krzywe, szpecace twarz. Ubrany jest w "+
        "pospolite ubranie, utkane z lnu. Szerokie spodnie i czarna przepaska na glowie "+
        "przywodza ci bardziej na mysl rybaka, badz zeglarza, niz przedstawiciela lokalnej "+
        "wladzy.\n");
                
    set_gender(G_MALE);    
    ustaw_odmiane_rasy(PL_CZLOWIEK); 
       
    set_stats(({65, 54, 50, 35, 35, 70}));
        
    set_skill(SS_DEFENCE, 20 + random(5));
    set_skill(SS_UNARM_COMBAT, 20 + random(5));
    set_skill(SS_SWIM, 25);
    set_skill(SS_PARRY, 15 + random(4));
    set_skill(SS_WEP_SWORD, 20 + random (8));
       
    add_prop(CONT_I_WEIGHT, 95000);
    add_prop(CONT_I_HEIGHT, 185);
      
    add_ask(({"pomoc","zadanie","prace"}), VBFC_ME("quest_hint"));
    add_ask(({"monstra","potwory","trolle"}), VBFC_ME("troll_hint"));
//    add_ask(({"nagrode","zwyciestwo","wygrana"}),VBFC_ME("koniec_questa"));
    add_ask(({"nagrode","zwyciestwo","wygrana"}),"@@koniec_questa",1);

    set_default_answer(QCIMIE(TO,PL_MIA) + " odpowiada: Niestety " +
        "nie jestem w stanie ci w tym pomoc.\n");

    set_act_time(13+random(10));
    add_act("emote wzdycha smutno.");
    add_act("emote rozglada sie dokola.");
    add_act("emote w zamysleniu drapie sie w brode.");
    add_act("emote mowi: Co rok to samo, i jak to mozna zyc?");
    add_act("emote mamrocze pod nosem jakies przeklenstwa.");
    add_act("emote mruczy: Nich Sigmar ma nas w swojej opiece.");
    add_act("emote mowi: Trolle to najwieksze monstra, jakie w zyciu widzialem.");
    add_act("emote mowi: To musi byc klatwa, klatwa nad nasza wioska.");
        
    set_cact_time(5);
    add_cact("krzyknij Zgin Pomiocie Chaosu!");
    add_cact("krzyknij Mieszkancy! Pomocy!");
    add_cact("emote z trudem odbija ciosy.");
    add_cact("emote rozglada sie w poszukiwaniu drogi ucieczki.");
    add_cact("krzyknij Pomocy!");
    
    add_weapon(HOME + "miecz_wojta.c");

}       

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));
}

string
query_presentation()
{
    return"Robin Schulbach, Wojt Wioski Ciemny Staw, czlowiek";
}    

varargs string          
quest_hint(int faza)    
{

    
    if (faza)
    if (!present(gracz, environment(this_object())))
    {
        command("powiedz Poszedl sobie, ech.");
        zajety = 0;
        return "";
    }

    switch(faza)
    {
        case 0: if (zajety) {command("emote mowi: Poczekaj, az skoncze.");
        			return "";}
        
            gracz = this_player();
            
            if (gracz->test_bit("imperium", 0, 18))
            {
                command("emote przez chwile drapie sie w brode w zamysleniu.");
                command("emote mowi: Dziekuje ci za checi, ale pomogles mi "
                  + "juz wystarczajaco, nic wiecej nie potrzebuje.");
                command("emote usmiecha sie przyjaznie."); 
                return "";
                /* Wyjscie z funkcji */
            }
            if (gracz->query_prop(PLAYER_I_DOSTAL_ZADANIE_WOJTA))
               {
                  command("powiedz Przeciez przed chwila juz ci mowilem!");
                  return "";
               }
            zajety = 1;
            command("emote usmiecha sie szeroko.");
            command("emote mowi: Ktos taki, jak ty, moglby nam pomoc, czemu nie.");

            set_alarm(4.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 1: /* kontunacja gadki */
            command("emote mowi: To jest problem calej naszej wioski, nie "+
                "tylko moj.");
            command("westchnij");
            set_alarm(4.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 2:
            command("emote mowi: Problemem tym sa trolle, paskudne, gorskie "+
                "bestie, ktore co jakis czas napadaja na nasza wioske.");
            command("emote zgrzyta zebami.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 3:
            command("emote mowi: Do tej pory udawalo nam sie takim, badz "+
                "innym sposobem odeprzec ich zdradzieckie ataki, ale "+
                "kto wie, co bedzie nastepnym razem ...");
            command("emote marszczy czolo.");
            command("emote mowi cicho: Co z naszymi dziecmi, zonami?");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 4:
            command("emote mowi: Moze ty nas uratujesz? Moze znajdziesz w sobie "+
                "dosc sil, by ukatrupic wreszcie te pomioty Chaosu?");
            command("emote patrzy z nadzieja w oczach.");
            set_alarm(5.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 5:
            command("emote mowi: Najgorsze jest to, ze "+
                "przewidziec bardzo trudno, kiedy atak ich nastapi.");
            set_alarm(7.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 6:
            command("emote mowi: Jesli ci to pomoze, to wiedz, ze kazdy z naszych "+
                "mieszkancow w walce cie wspomoze, na ile bedzie potrafil. Nie "+
                "wymagaj od nas wiele, jestesmy wszak rolnikami, ale ...");
            command("usmiechnij sie przyja");
            set_alarm(2.0, 0.0, "quest_hint", (faza + 1));
            break;
        case 7:
            command("krzyknij Pomoz nam, a za kazdego zabitego trolla cie wynagrodzimy ... "+
                " jesli tylko przezyjemy.");
            gracz->add_prop(PLAYER_I_DOSTAL_ZADANIE_WOJTA, 1); 
            zajety = 0;
                      /* zaznaczamy sobie, ze gracz   */
                      /* uslyszal to co trzeba        */
            break;
    }
    return "";
    /* Wyjscie z funkcji */
}

varargs string
troll_hint(int faza)
{
// Kolejne podpowiedzi.
    switch(faza)
    {
     case 0:
    
       command("emote mowi: Gorskie trolle to bestie, jakich malo. Sa wielkie "+
          "i krwiorzercze. Malo kto moze oprzec sie ich sile.");
      set_alarm(4.0,0.0, "troll_hint", (faza + 1));
      break;

     case 1:
       command("emote mowi: Ich siedliszcze jest gdzies na wschodzie stad, w Gorach "+
           "Czarnych.");
       command("splun");
      set_alarm(7.0,0.0, "troll_hint", (faza + 1));
      break;

     case 2:
       command("emote dodaje: Wiem, ze trolle czesto do zwiadow, swych mlodszych "+
          "braci wykorzystuja, orkow.");
       command("emote mowi: Ale i jedni oni i drudzy to zrodzone przez Chaos "+
           "plugastwa, miejsce ich w ziemi jeno.");
      set_alarm(8.0,0.0,"troll_hint",(faza+1));  
      break;
      
      case 3:
      command("emote namysla sie chwile.");
      command("emote mowi: Zaprawde tak chyba bylo, ze najprzod, przed atakiem "+
          "jakowegos orka w lesie ludzie widzieli, dokladnie na dzien przed atakiem.");
      command("emote mowi: Moze ta informacja zebrac wystarczajace sily ci pomoze, "+
          "by trollom odpor dac.");
      break;
    }
    return"";
}


varargs string
koniec_questa(int faza)
{
    if(!this_player()->query_prop(PLAYER_I_DOSTAL_ZADANIE_WOJTA))
    {
        command("emote drapie sie po glowie.");
        command("emote mowi: Nie bardzo wiem o czym mowisz.");
        return "";
    }    
    if(ADMIN->query_trolle())
    {
        command("emote marszczy brew.");
        command("emote mowi: Juz o nagrodzie mowisz? Najpierw pokaz zes na nia "+
            "zasluzyl. Szykuj swa bron!");
        return "";
    }
    if(!this_player()->query_prop(PLAYER_I_ZABIL_TROLLA))
    {
        command("emote drapie sie w brode.");
        command("emote mowi: Trolle pokonane, lecz wklad twoj w walke z nimi "+
             "niewielki byl i innych nagrodzic nam wypada, nie ciebie. Przykro mi.");
        return "";
    }         
    if (this_player()->test_bit("imperium", 0, 18))
    {
      this_player()->catch_msg("To milo, ze mi pomogles raz jeszcze.\n");
      return"";
    }
    command("emote usmiecha sie pogodnie.");
    command("emote mowi: A wiec trolle pokonane. Brawo.");
    command("emote mowi: Uratowales nasza wioske przed zaglada. Przyjmij zatem "+
        "od nas ten dar.");
    ile_doswiadczenia(this_player());
    return"";                
}


void
ile_doswiadczenia(object who)
{

   int ile, i;
   int xp_base = 3000;
   
   ile = ADMIN->query_ludzie();
   xp_base -= (16-ile)*200;
   
   who->catch_msg("Mezczyzna kladzie ci dlonie na skroniach.\n");   
   who->catch_msg("Czujesz sie bardziej doswiadczony.\n");
   who->add_exp(xp_base, 0);

   who->set_bit(0, 18);

   seteuid("silvy");
   write_file("/d/Imperium/private/questlog/0_18.log",
              ctime(time()) + ": " + who->query_name() + ", " + xp_base
            + " xp\n");

   return;
}

