/*
 * Standardowy npc z Athel Loren by Tanis
 */

inherit "/d/Imperium/std/monster.c";

#include "ogolne.h"
#include "lelf.h"

#define PYTANIA PATH + "obiekty/pytania.c"

void
zapisz(string co, object wrog)
{
  string str;

  str = "Npc: " + capitalize(query_name()) + ", Wrog: " + capitalize(wrog->query_real_name()) + ". " + co + " " + ctime(time()) + "\n";

  write_file(PATH + "npc/walka.log",str);
}

void
create_elfa()
{
    set_gender(G_MALE);

    add_prop(LIVE_I_NEVERKNOWN,1);

    dodaj_przym("wysoki","wysocy");
    dodaj_przym("szczuply","szczupli");
    
    set_random_move(20,0); 

    set_long("Jest to typowy elf. Jest wysoki i szczuply. Ubrany jest w zwykle, skorzane "
          + "ubranie, nadajace sie swietnie rowniez do polowania.\n");

        set_stats(({40,40,40,40,40,40}));

        set_skill(SS_PARRY,15);
        set_skill(SS_WEP_KNIFE, 20 + random(20));
        set_skill(SS_DEFENCE, 20 + random(5));

        add_prop(IMPERIUM_LIVE_I_ATHEL_CITIZEN, 1);

        add_prop(CONT_I_WEIGHT, 55000);
        add_prop(CONT_I_HEIGHT, 200);

}

void
powiedz(string co)
{
  command("powiedz "+co);
}

string
odpowiedz_na_pytanie(string numer_tekst)
{
 int numer;
 int a;
 float opoznienie;
 string *odpowiedzi;

 numer=atoi(numer_tekst);

 odpowiedzi=((PYTANIA)->query_pytania())[numer];

 a=random(sizeof(odpowiedzi));

 opoznienie=itof(random(5))+0.1;

 set_alarm(opoznienie, 0.0, "powiedz",odpowiedzi[a]);

 return "";
}


void
dodaj_zapytania()
{
 int b,a=0;
 string *pytania=({});
 string napis;

 b=sizeof((PYTANIA)->query_pytania());

 for(a=0;a<b;a=a+2)
    {
       pytania=((PYTANIA)->query_pytanie(a))+({});
       napis=(a+1);
       add_ask(pytania,"@@odpowiedz_na_pytanie|"+napis+ "@@",1);
    }

  set_default_answer(VBFC_ME("odp_standardowa"));
}

void
create_monster()
{
    setuid();
    seteuid(getuid());

  ustaw_odmiane_rasy(PL_ELF);
  set_race_name("elf");

  dodaj_zapytania();

  set_restrain_path(APATH);

  create_elfa();

  add_cact("krzyknij Pomocy !!! Morduja !!!");
}

void
attacked_by(object ob)
{
    object lucznicy;
    object *tablica;
    int czy_wezwal=0;
    int i,a,czy_byli;

    zapisz("Zostalem zaatakowany.",ob);

    i=random(6);

    switch(i)
     {
       case 0:
                command("krzyknij Bracia ! Na pomoc !");
                break;
       case 1:
                command("krzyknij Ratujcie !");
                break;
       case 2:
                command("krzyknij Ratunku !");
                break;
       case 3:
                command("krzyknij Aaaaaa ! Morduja !");
                break;
       case 4:
                command("krzyknij Szybko ! Potrzebuje pomocy !");
                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_name()+ ").",ob);
            }
       }
    if(czy_wezwal)
       command("emote wola: Pomoz mi, predko  !!");

    ::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);
}

string
odp_standardowa()
{
 int a;
 float opoznienie;
 string *odpowiedzi;

 odpowiedzi=(PYTANIA)->query_wykrety();

 a=random(sizeof(odpowiedzi));

 opoznienie=itof(random(5))+0.1;

 set_alarm(opoznienie, 0.0, "powiedz",odpowiedzi[a]);

 return "";
}

string
imie_gracza(object kogo,int przypadek)
{
 if(przypadek==WOLACZ) return(kogo->query_wolacz());
 else return(kogo->query_imie(przypadek));
}

void
przedstawiamy_sie(string kto) 
{
    object gracz;
    mixed *powitanie;
    int a;
    string do_wszystkich;
    string do_gracza;

    gracz=find_living(kto, 0);
	
	if(!interactive(gracz)) return;

    a=random(sizeof((PYTANIA)->query_powitania()));

    powitanie=((PYTANIA)->query_powitania())[a]+({});

    if(powitanie[0]=="") do_wszystkich=powitanie[1];
    else do_wszystkich=powitanie[0]+imie_gracza(gracz,powitanie[3])+powitanie[1];

    if(powitanie[2]=="") do_gracza=do_wszystkich;
    else do_gracza=powitanie[2];

    tell_room(environment(this_object()),QCIMIE(this_object(),PL_MIA)+" "+do_wszystkich+"\n",gracz);
    write(query_Imie(this_player(),PL_MIA)+" "+do_gracza+"\n");
}

void
add_introduced(string kto)
{
    set_alarm(1.0+(itof(random(25))/itof(10)), 0.0, &przedstawiamy_sie(kto));
}

void
emote_hook(string emote, object wykonujacy, string przyslowek)
{
    switch (emote)
    {
        case "kopnij": 
        case "spoliczkuj" :
        case "szturchnij":
        case "opluj" : set_alarm(2.0, 0.0, "zly", wykonujacy);
        	    break;
        	    
        case "zasmiej": set_alarm(2.0, 0.0, "smiech", wykonujacy);
        	      break;
        case "pocaluj":
        case "przytul": set_alarm(2.0, 0.0, "dobry", wykonujacy);
    }
}

void
smiech(object kto)
{
    switch (random(5)) 
    {
      case 0 : command("zasmiej"); break;
      case 1 : command("emote smieje sie cicho"); break;
      case 2 : command ("powiedz Jest tu cos smiesznego?");
      default:
        command("hmm");
    }
}

void
bardzo_zly(object kto)
{
    command("powiedz Czy wiesz, ze to oznacza smiertelna obraze !!!?");
}

void
zly(object kto)
{
    command("powiedz Nie bedziesz mnie obrazac !!");
}

void
zadowolony(object kto)
{
    int los;

    los = random(40);
    
    switch (los) 
      {
          case 1-10 : command("emote czerwieni sie az po same uszy."); break;
          case 11-20 : command("emote usmiecha sie radosnie."); break;
          case 21-30 : command("emote mowi: A wiec jeszcze moge sie podobac !"); break;
          default : zly(kto);
      }
}

void
dobry(object kto) 
{
    if(kto->query_gender()==query_gender()) bardzo_zly(kto);
    if((kto->query_gender()!=query_gender()) && (kto->query_race()!=query_race())) zly(kto);
}

void
przybadz_z_pomoca(object kogo)
{
   command("zabij " + OB_NAME(kogo));
   command("emote wola: Trzymaj sie !");
   zapisz("Przybywam na pomoc.",kogo);
}

void
pobij_go(object kogo)
{
   set_alarm(1.0, 0.0, "przybadz_z_pomoca",kogo);
}

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_real_name()+ ").",kto_mnie_bije);
            }
       }
    if(czy_wezwal)
       command("emote wola: Pomoz mi, predko  !!");

    return;
}

void
notify_you_killed_me(object kogo_zabilem)
{
   // ::notify_you_killed_me(kogo_zabilem);
	
	zapisz("Zabilem lobuza!",kogo_zabilem);
	
}