/* Autor:       Kaes
 * Data:        16.11.97
 * Plik:        Synalek.c
 * Opis:        NPC questowy dajacy questa :)
*/

inherit "/d/Imperium/std/monster";
inherit "/d/Imperium/std/quest";
#include <ss_types.h>
#include <macros.h>
#include <stdproperties.h>
#include <seqaction.h>
#include <kaes.h>

#define NOTES "notes.c"
void oddal_notes(object from);
void ile_doswiadczenia(object who);
object gracz;
int zajety=0;

void
create_monster()
{
    ustaw_imie(({"manuel","manuela","manuelowi","manuela","manuelem",
     "manuelu"}),PL_MESKI_OS);
    
    dodaj_przym("jasnowlosy","jasnowlosi");
    
    set_long("Jasnowlosy, drobnej budowy, mlody mezczyzna. Wyglada na dosyc "+
     "smutnego, a jego twarz od czasu do czasu marszczy sie na chwile. "+
     "Jest lekko przygarbiony, a rece trzyma caly czas w kieszeniach. "+
     "Jego ubranie, niegdys ladne i kolorowe, teraz jest brudne, szare, "+
     "zaniedbane. Zapewne nie ma nikogo, kto by mogl sie nim zaopiekowac.\n");
    
    ustaw_odmiane_rasy(PL_CZLOWIEK);
    
    set_gender(G_MALE);
    
    add_prop(CONT_I_WEIGHT,65000);
    add_prop(CONT_I_HEIGHT,167);
    
    set_skill(SS_TRADING,20);
    set_skill(SS_LANGUAGE,25);

    set_stats(({30,35,30,50,40,20}));
 
    set_act_time(2);
    add_act("emote wzdycha ze smutkiem.");
    add_act("emot mowi: Nie ma chyba nikogo kto moglby mi pomoc.");
    add_act("emote rozglada sie po otoczeniu. Jego wzrok zatrzymuje sie na "+
     "dluzej na twojej twarzy.");
    add_act("emote przez chwile wydaje sie byc nieobecny.");
    add_act("emote z wahaniem robi kilka krokow, po czym odwraca sie i "+
     "wraca na miejsce.");

    add_ask(({"zadanie","pomoc","prace"}), VBFC_ME("quest_hint"));
    add_ask(({"notatnik","notes","pamietnik"}), VBFC_ME("not_info"));
    add_ask("ojca", VBFC_ME("dad_info"));
    add_ask("nagrode", VBFC_ME("done_quest"));
    set_default_answer(QCTNAME(this_object()) + " mowi: Hmm... Nie wydaje mi sie zebym mogl ci w tym pomoc.\n");
    remove_prop(NPC_M_NO_ACCEPT_GIVE);
}

add_introduced(string imie)
{
    set_alarm(1.0,0.0,"return_info",imie);
}

string not_info()
{
   command("powiedz Ten notes jest dla mnie bardzo wazny, wiecej ci nie powiem.");
    return"";
}

string dad_info()
{
   command("powiedz Ach, moj biedny ojciec.");
   return"";
}

varargs void
return_info(string kto)
{
    command("przedstaw sie "+find_player(kto)->query_real_name(PL_CEL));
}

string query_presentation()
{
   return"Manuel von Risenbohn, Byly Sekretarz i Kronikarz Ksiecia, czlowiek";
}

varargs string
quest_hint(int faza)
{

   if (faza)
   if(!present(gracz,environment(this_player())))
   {
    command("powiedz Echhh, juz nikt mi nie chce 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,2))
    {
     command("powiedz Hej! Nie mam sumienia wykorzystywac "+
      "ciebie tyle razy.");
      return"";
     }
     if(gracz->query_prop("kaesquest_0_2_szuka_notesa_ojca"))
      {
       command("powiedz Powiedzialem ci juz wszystko.");
       command("westchnij");
       return"";
      }
      command("emote prostuje sie, a w jego oczach pojawia sie blysk radosci.");
      command("powiedz Hej! Mozesz mi pomoc!");
      zajety = 1;
      set_alarm(5.0,0.0,"quest_hint",(faza+1));
      return"";
      break;
    case 1:
      command("emote opuszcza troche glowe.");
      command("powiedz To znaczy jesli sie zgodzisz ...");
      set_alarm(6.0,0.0,"quest_hint",(faza+1));
      break;
    case 2:
      command("powiedz Mam problem ktory spedza mi "+
        "sen z powiek juz od wielu dni.");
      command("powiedz Moj ojciec prowadzil zajazd... pewnego dnia "+
        "jednak cos sie stalo.");
      set_alarm(7.0,0.0,"quest_hint",(faza+1));
      break;
    case 3:
      command("emote namysla sie chwile.");
      command("powiedz Zaczeli ginac goscie, po prostu znikali bez sladu. Od "+
        "tego czasu coraz mniej osob zapuszczalo sie w te okolice, az w zajezdzie "+
        "pozostal tylko moj ojciec. Jako jedyny nie chcial opuscic tego budynku.");
      set_alarm(6.0,0.0,"quest_hint",(faza+1));
      break;
    case 4:
      command("emote przymyka na chwile oczy.");
      command("powiedz Od tego czasu go nie widzialem... nie mialem od niego "+
        "zadnej wiadomosci. Gdyby udalo sie go znalezc ... Albo odszukac cos "+
        "co do niego nalezalo ...");
      command("emote patrzy z nadzieja.");
      gracz->add_prop("kaesquest_0_2_szuka_notesa_ojca",1);
      zajety = 0;
      break;
     }
}
      
void enter_inv(object ob, object from)
{
   ::enter_inv(ob, from);
   if(ob->id("_notes_ojca_"))
   {
    set_alarm(0.0,0.0,&oddal_notes(from));
    return;
   }
   command("powiedz O, dziekuje, moze sie przyda.");
}

void oddal_notes(object from)
{
   string who, what;
   who=from->query_real_name();
   if(!from->query_prop("kaesquest_0_2_szuka_notesa_ojca"))
   {
    command("powiedz Hej! To mojego ojca! Dziekuje...");
    command("emote wybiega szybko z notesem w rekach.");
    remove_object();
    return;
    // wychodzisz z tej funkcji zeby reszty nie wykonywalo, bo nie
    // mozemy dawac graczowi expa jesli nie dostal tego questa.
   }
   command("krzyknij Notes mego ojca! "+
    "Nawet nie wiesz, ile to dla mnie znaczy.");

// teraz rozdawanie expow musisz uzaleznic od tego czy znalazl notes we 
// wlasciwy sposob ( sprawdzanie odpowiednich propow ),
// czy robil juz tego questa ( spradzanie questbita ustalonego wczesniej 
// itp.
// Patrz questowy.c z przykladow
   ile_doswiadczenia(from);
   command("emote wybiega szybko z notesem w rekach.");
   remove_object();
}  

void ile_doswiadczenia(object who)
{
   int xp_base=5000;
   if(who->test_bit("imperium",0,2))
   {
    who->catch_msg("Hej, to znowu ty!\n"); 
    return;
   }
   xp_base-=(who->test_bit("imperium",3,4)?0:2000);
   xp_base-=(who->query_prop("kaesquest_0_2_przeszukal_pokoj_setha")?0:2000);
   who->catch_msg("Czujesz sie bardziej doswiadczon" +
   	who->koncowka("y","a") + ".\n");
   who->add_exp(xp_base,0);
   who->set_bit(0,2);
   seteuid(getuid());
   write_file("/d/Imperium/private/questlog/0_2.log",
      ctime(time())+": "+who->query_name()+", "+xp_base+" xp\n");
   return;
} 
