/* Aut: Mezon 
 * specjale by Silvy 98
 */

inherit "/d/Imperium/std/chaos";

#include "mezon.h"
#include <wa_types.h>
#include "/d/Imperium/sys/alarm.h"
#include <ss_types.h>
#include <macros.h>
#include <stdproperties.h>

void dusimy(object kogo);

object curr_enemy;

#define H_GLOWA 0
#define H_CIALO 1

#define SKRZYNIA_ROOM   "/d/Imperium/Kraina/RUINY/jaskinie/jask_ga2"

create_chaos()
{
  ustaw_nazwe(({"demon","demona","demonowi",
             "demona","demonem","demonie"}),
          ({"demony","demonow","demonom",
           "demony","demonami","demonach"}),PL_MESKI_OS);

  ustaw_odmiane_rasy(({"demon","demona","demonowi",
              "demona","demonem","demonie"}),
            ({"demony","demonow","demonom",
              "demony","demonami","demonach"}),PL_MESKI_OS);

        set_gender(G_MALE);

        
    dodaj_przym("ognistooki","ognistoocy");
    dodaj_przym("mroczny","mroczni");
    
    add_prop(LIVE_I_NO_CORPSE,1);
    
             
 set_long("Stoi przed toba potezna postac rycerza z "+
          "naciagnietym na glowe "+
          "kapturem, spod ktorego spoglada para plonacych oczu. " +
          "Na jego zbroi spostrzegasz znak czerwonego skorpiona, szykujacego "+
          "sie do zadania ciosu. "+
          "To prawie niemozliwe, ale po chwili zdajesz sobie sprawe, ze "+
          "jest to jeden z demonow Khorna, przyslanych do krainy smiertelnych, "+
          "by polowac na jego wrogow. "+
          "Kazdy demon byl tworzony tylko dla jednego celu i znikal wraz z "+
          "osiagnieciem tegoz. " +
          "Zastanawiasz sie, jaki cel ma ten, stojacy przed toba.\n");

        set_stats(({140,100,200,80,80,100}));

        set_skill(SS_WEP_SWORD, 90);
        set_skill(SS_WEP_POLEARM, 90);
        set_skill(SS_DEFENCE, 70);
        set_skill(SS_PARRY, 70);
        set_skill(SS_BLIND_COMBAT, 95);
        set_skill(SS_AWARENESS, 100);

        add_prop(LIVE_I_NEVERKNOWN, 1);

        add_armour(NPATH + "zbroje/plaszcz.c");
        add_armour(NPATH + "zbroje/tarcza1.c");
        add_armour(NPATH + "zbroje/naramienniki.c");
        add_armour(NPATH + "zbroje/czarna.c");
        add_armour(NPATH + "zbroje/wy_buty.c");

        set_alignment(-500);

        set_act_time(20+random(15));
        add_act("powiedz Lepiej stad odejdz ...");
        add_act("przeklnij");
        add_act("rozejrzyj sie uwaznie");
        add_act("usmiechnij sie demonicz");
        add_act("zasmiej sie demon");

        set_cact_time(20+random(20)); 

        add_cact("emote warczy niezrozumiale, plujac na boki");
        add_cact("krzyknij Zaklociles moj spokoj. Juz jestes martwy!");
        add_cact("krzyknij Gin Psie!");
        
        set_restrain_path(({"/d/Imperium/Kraina/RUINY/jaskinie","/d/Imperium/tigr"}));
}

void
attacked_by(object wrog)
{
    if (member_array(wrog,query_enemy(-1))==-1)
       command("emote warczy: Ha! Nastepny!");
    return ::attacked_by(wrog);
}

void
do_die(object killer)
{
 tell_room(environment(this_object()), "Blekitna mgla rozprasza sie i po demonie nie ma "+
   "nawet sladu.\n");

 ::do_die(killer);
}

void
to_nie_koniec()
{
  command("emote wypowiada kilka slow w nieznanym jezyku, po czym znika nagle. " +
    "W pomieszczeniu zostaje tylko blekitna mgla.");
  move(VOID,1);
  set_alarm(15.0+itof(random(75)), 0.0, &dusimy(curr_enemy));
}

void
gonimy(object kogo)
{
   set_follow(kogo, 0.2);
   set_this_player(kogo);
   write(capitalize(TO->short()) + " atakuje cie!\n");
   saybb(QCIMIE(TO,PL_MIA) + " atakuje " + QIMIE(TP,PL_BIE) + ".\n");
   attack_object(TP);
   curr_enemy=TP;
}   

int
special_attack(object kogo)
{
  if(random(15)) return 0;
  if(!random(4))
  {
    command("krzyknij Khorne! Panie! Wspomoz mnie!");
    kogo->catch_msg("Czujesz nagle potworna sile, ktora odbiera ci "+
      "moc w czlonkach. Czujesz sie nieziemsko "+
      kogo->koncowka("zmeczony","zmeczona","zmeczone")+"!\n");
    kogo->set_fatigue(10);
    return 1;
  }
  to_nie_koniec(); 
  return 1;
}

int
in_restrain_path(string lok)
{
   string * rp=query_restrain_path();
   int i = sizeof(rp);
   
   while(i--)
     {
        if (wildmatch(rp[i]+"*",lok)) return 1;
     }
  return 0;
}

void
dusimy(object kogo)
{
  if(!kogo)
  {
    move(VOID,1);
    SKRZYNIA_ROOM->demon_wolny();
    
    return;
  }
  
  if(!random(3))
  {
    if (!in_restrain_path(MASTER_OB(environment(kogo))))
       {
          move(VOID, 1);
          SKRZYNIA_ROOM->demon_wolny();
          return;
       }
    
    tell_room(environment(kogo), "Nagle wokol pojawiaja sie pasemka blekitnej "+
      "mgly. Z niej formuje sie postac ognistookiego demona.\n");
    
    this_object()->move(environment(kogo));
    set_this_player(kogo);
    
    write(capitalize(short()) + " atakuje cie!\n");
    say(QCIMIE(this_object(),PL_MIA)+" atakuje "+QCIMIE(kogo,PL_BIE)+"!\n");  
    
    this_object()->attack_object(kogo);
    return;
  }
  
  kogo->catch_msg("Nagle czujesz na szyi czyjs lodowaty dotyk. Zimne jak "+
    "smierc palce zaciskaja sie wokol twej szyi. Czujesz jak zycie ucieka wraz "+
    "z cieplem.\n");
  kogo->command("zakrztus sie");
  kogo->heal_hp(-100*(random(3)+1));
  if(kogo->query_hp() <= 0)
    {
      kogo->do_die(this_object());
      dusimy(0);
    }
  else
    kogo->catch_msg("Po chwili odczucie zimna znika.\n"); 
  set_alarm(15.0+itof(random(75)), 0.0, &dusimy(kogo));
}

unset_follow()
{
   ::unset_follow();
 
   command("emote wypowiada kilka slow w nieznanym jezyku, po czym znika nagle. " +
    "W pomieszczeniu zostaje tylko blekitna mgla.");
 
   move(VOID, 1);

   SKRZYNIA_ROOM->demon_wolny();
}

notify_enemy_gone(object enemy)
{
   unset_follow();
}
