/*
 * Chlopiec z Athel Loren by Tanis
 */

#include "ogolne.h"

inherit "d/Imperium/std/monster.c";

#include "lelf.h"

#define PRZYMIOTNIKI ({ ({"blady","bladzi"}), ({"opalony","opaleni"}), ({"opalony","opaleni"}), \
                        ({"jasnowlosy","jasnowlosi"}), ({"ciemnowlosy","ciemnowlosi"}), ({"dlugowlosy","dlugowlosi"}), \
                        ({"smutny","smutni"}), ({"wesoly","weseli"}), ({"rozbawiony","rozbawieni"}) })

#define LICZBA_PRZYMIOTNIKOW 9

#define WIELKOSCI ({ ({"maly","mali"}), ({"duzy","duzi"}), ({"maly","mali"}) })

#define LICZBA_WIELKOSCI 3

int wielkosc=0;

void
zapisz(string co, object wrog)
{
  string str;

  str = "Npc: Chlopiec, Wrog: " + capitalize(wrog->query_real_name()) + ". " + co + " " + ctime(time()) + "\n";

  write_file(PATH + "npc/walka.log",str);
}

string
dlugi_opis()
{
    string s;

    switch(wielkosc)
      {
          case 0 : s = "Jest to maly, lecz juz bardzo samodzielny elfi chlopiec. "
                     + "Niedlugo pewnie ojciec zabierze go na jego pierwsze polowanie do lasu. "
                     + "Nosi wygodne, skorzane ubranie i ciekawie rozglada sie wokolo. "
                     + "Widac, ze niczego mu nie brakowalo, lacznie z miloscia rodzicow i przyjaciol.\n";
                   break;
          case 1 : s = "Jest to juz duzy, samodzielny elfi chlopak, wlasciwie prawie juz dorosly elf. "
                     + "Z pewnoscia sam zapuszcza sie juz do lasu, polowac na dzikie zwierzeta. "
                     + "Jeszcze troche czasu i postanowi zalozyc swoja wlasna rodzine i zamieszkac osobno od rodzicow. "
                     + "Ubrany jest w bardzo wygodna, skorzana kurtke i takiez same spodnie, odpowiednie w czasie "
                     + "wypraw do lasu i na polowania.\n";
                    break;

          default : s = "Jest to maly, lecz dosc juz samodzielny elfi chlopiec. Ubrany jest "
                      + "w ladna, skorzana kurteczke. Wyglada na zadbanego i troskliwie wychowywanego. "
                      + "Samotnie przemierza miasto, lecz z pewnoscia jego mama jest gdzies w poblizu. Zreszta moglaby "
                      + "rownie dobrze pojsc do domu, gdzy w Athel-Loren elfie dzieci sa bezpieczne.\n";
                   break;
      }

    return s;
}

void
create_monster()
{
    int i,j;
    
    jak_pojawiac_sie(" nadchodzi.");
    jak_znikac(" odchodzi szybkim krokiem.");
    jak_znikac_podczas_walki(" ucieka przerazony.");

    ustaw_odmiane_rasy(({"elfi chlopiec","elfiego chlopca","elfiemu chlopcu","elfiego chlopca",
                       "elfim chlopcem","elfim chlopcu"}),({"elfi chlopcy","elfich chlopcow",
                       "elfim chlopcom","elfich chlopcow","elfimi chlopcami","elfich chlopcach"}),
                       PL_MESKI_OS);

        ustaw_nazwe(({"chlopiec", "chlopca", "chlopcu", "chlopca", "chlopcem", "chlopcu"}),
                       ({"chlopcy", "chlopcow", "chlopcom", "chlopcow", "chlopcami",
                       "chlopcach"}), PL_MESKI_OS);

    set_gender(G_MALE);

    set_race_name("");

    wielkosc=random(LICZBA_WIELKOSCI);

    add_prop(LIVE_I_NEVERKNOWN,1);

    i = random(LICZBA_PRZYMIOTNIKOW);
    j = random(LICZBA_PRZYMIOTNIKOW);
    while(!(j>(i+2) || j<(i-2)) ) j = random(LICZBA_PRZYMIOTNIKOW);
   
    dodaj_przym(PRZYMIOTNIKI[i][0], PRZYMIOTNIKI[i][1]);
    
    if(random(1))
      {
        dodaj_przym(PRZYMIOTNIKI[j][0], PRZYMIOTNIKI[j][1]);
      }
    else
      {
        dodaj_przym(WIELKOSCI[wielkosc][0], WIELKOSCI[wielkosc][1]);
      }
    
    set_random_move(20,0); 

    set_long("@@dlugi_opis");

    switch(wielkosc)
        {
           case 0 : set_stats(({30,35,20,30,30,20}));
                    set_skill(SS_PARRY,5);
                    set_skill(SS_WEP_KNIFE, 10 + random(20));
                    set_skill(SS_DEFENCE, 15 + random(5));

                    add_prop(CONT_I_WEIGHT, 40000);
                    add_prop(CONT_I_HEIGHT, 150);
        
                    set_cact_time(4);
                    add_cact("krzyknij Nie bij ! Pomocy !");
                    add_cact("krzyknij Mamo !!");
                    add_cact("krzyknij Pomocy ! Niech ktos mi pomoze !");
                    add_cact("krzyknij Nic ci nie zrobilem !");

                    set_act_time(10 + random(20));
                    add_act("emote patrzy ciekawie na drzewa.");
                    add_act("emote rozglada sie ciekawie wokolo.");
                    add_act("emote przyglada ci sie z wyrazem zaciekawienia na twarzy.");

                    set_whimpy(80); 
                    dodaj_miedz(10+random(25));

                      break;
           case 1 : set_stats(({30,45,35,55,55,30}));
                    set_skill(SS_PARRY,10);
                    set_skill(SS_WEP_KNIFE, 15 + random(20));
                    set_skill(SS_DEFENCE, 15 + random(10));

                    add_prop(CONT_I_WEIGHT, 56000);
                    add_prop(CONT_I_HEIGHT, 180);
        
                    set_cact_time(4);
                    add_cact("krzyknij Jeszcze pozalujesz !");
                    add_cact("emote wola: A masz ! A masz !");
                    add_cact("krzyknij Straz ! Straz !");
                    add_cact("krzyknij Pomocy !");

                    set_act_time(10 + random(20));
                    add_act("emote spoglada uwaznie na drzewa.");
                    add_act("emote rozglada sie wokolo.");        
                    add_act("emote przyglada ci sie badawczo.");
                    add_act("emote wdycha gleboko swieze, lesne powietrze.");
                    add_act("emote podnosi glowe i uwaznie bada niebo.");
                    set_whimpy(75); 
                    dodaj_miedz(30+random(25));

                      break;
           default : set_stats(({15,15,15,15,15,15}));
                      set_skill(SS_PARRY,2);
                      set_skill(SS_DEFENCE, 10 + random(5));

                    add_prop(CONT_I_WEIGHT, 27000);
                    add_prop(CONT_I_HEIGHT, 100);
        
                    set_cact_time(4);
                    add_cact("krzyknij Aaaaaa !");
                    add_cact("emote krzyczy przerazliwie !");
                    add_cact("krzyknij Mamo !!!");
                    add_cact("emote krzyczy piskliwie !");

                    set_act_time(10 + random(20));
                    add_act("emote oglada drzewa.");
                    add_act("emote rozglada sie ciekawsko wokolo.");
                    add_act("emote przyglada ci sie.");

                    set_whimpy(100); 
                    dodaj_miedz(5+random(5));

                      break;
        }

        add_prop(IMPERIUM_LIVE_I_ATHEL_CITIZEN, 1);

    set_alignment(400);

}

void
init_living()
{
    object *tablica;
    int a, czy_wezwal=0;
    object kto_mnie_bije;

    ::init_living();

    if(!query_attack()) return;

    kto_mnie_bije=query_attack();
    
    tablica=all_inventory(environment(this_object()));

    tablica=tablica-({this_object()});

    for(a=0;a<sizeof(tablica);a++)
       {
          if(function_exists("create_elfa", tablica[a]) && !tablica[a]->query_prop(OBJ_M_NO_ATTACK))
            {
               tablica[a]->pobij_go(kto_mnie_bije);
               czy_wezwal=1;
               zapisz("Wezwalem pomoc (" + tablica[a]->query_name()+ ").",kto_mnie_bije);
            }
       }
    if(czy_wezwal)
       command("emote wola: Pomoz mi, prosze !!");

    return;
}

void
attacked_by(object ob)
{
    object lucznicy;
    object *tablica;
    int czy_wezwal=0;
    int i,a,czy_byli;

    i=random(6);

    switch(i)
     {
       case 0:
                command("krzyknij Pomocy !");
                break;
       case 1:
                command("krzyknij Ratujcie !");
                break;
       case 2:
                command("krzyknij Ratunku !");
                break;
       case 3:
                command("krzyknij Aaaaaa ! Morduja !");
                break;
       case 4:
                command("krzyknij Ratujcie !");
                break;
       case 5:
                command("krzyknij Na pomoc !");
                break;
      default:
                command("krzyknij Pomocy !");
                break;
     }

 czy_byli=0;

 tablica=deep_inventory(ob);

 for(a=0;a<sizeof(tablica);a++)
    {
       if(tablica[a]->id("lucznicy"))
          {
            czy_byli=1;
          }
    }

   if(!czy_byli)
     {
       lucznicy = clone_object(PATH + "obiekty/lucznicy.c");
       lucznicy->move(ob);
       lucznicy->zacznij_strzelac();
       zapisz("Wlaczono lucznikow.",ob);
     }

     this_player()->add_prop(PLAYER_JEST_OSTRZELIWANY_W_ATHEL,1);

    tablica=all_inventory(environment(this_object()));
    tablica=tablica-({this_object()});

    for(a=0;a<sizeof(tablica);a++)
       {
          if(function_exists("create_elfa", tablica[a]) && !tablica[a]->query_prop(OBJ_M_NO_ATTACK))
            {
               tablica[a]->pobij_go(ob);
               czy_wezwal=1;
               zapisz("Wezwalem pomoc (" + tablica[a]->query_real_name()+ ").",ob);
            }
       }
    if(czy_wezwal)
       command("emote wola: Pomoz, prosze  !!");

    ::attacked_by(ob);
}

void
do_die(object ob)
{
  if(this_object()->query_hp()==0)
  {
    if ((GILDIA)->query_prawa(ob->query_real_name())>=LEV_CZLONEK)
    {
        (GILDIA)->wyrzuc_z_gildii(ob,ZABIL_NPCA);
    }
    zapisz("Zginalem.",ob);
  }
    ::do_die(ob);
}

void
notify_you_killed_me(object kogo_zabilem)
{
    //::notify_you_killed_me(kogo_zabilem);
	
	zapisz("Zabilem lobuza!",kogo_zabilem);
	
}