/* 
 * Kompania Krogulca
 *
 * Copyright(C):    Khazzar (jedrekz@pascom.pl)
 * Data:            26.08.2003
 * 
 */

#include "def.h"
inherit "/std/monster.c";

#define WANTED "/d/Imperium/khazzar/Kompania_Krogulca/obj/lista_wrogow" 

public void
create_npc_w_obozie()
{
}

void
create_monster()
{
    set_long("Standardowy npc w forcie Kompanii Krogulca.\n");

    add_prop(CONT_I_WEIGHT,90000 + random(40000));
    add_prop(CONT_I_HEIGHT,170 + random(20)); 

    set_stats(({ 120 + random(60),
                 120 + random(60),
                 120 + random(60),
                 120 + random(30),
                 120 + random(30),
                 120 + random(60)  }));

    set_skill(SS_WEP_SWORD,    70 + random(25));
    set_skill(SS_DEFENCE,      70 + random(25));
    set_skill(SS_PARRY,        70 + random(25));
    set_skill(SS_SHIELD_PARRY, 70 + random(25));
    set_skill(SS_BLIND_COMBAT, 60 + random(20));
    set_skill(SS_AWARENESS,    70 + random(20));
    set_skill(SS_LOC_SENSE,    60 + random(20));


    set_alignment(random(20)-random(20));

    add_prop(NPC_M_NO_ACCEPT_GIVE, 1);
    add_prop(NPC_I_NO_FEAR, 1);
    add_prop(NPC_I_NO_RUN_AWAY, 1);

    set_aggressive("@@atak");

    create_npc_w_obozie();
}

int
atak()
{
    string imie = TP->query_real_name();
    string opis = TP->query_nonmet_name();

    if (WANTED->czy_wrog(imie,opis))
    {
        set_alarm(0.5, 0.0, "okrzyk");
        return 1;
    }

    return 0;    
}

public void
wsparcie(object ob)
{
    command("wesprzyj " + OB_NAME(ob));
} 

public void
pomocy()
{
    (all_inventory(environment(TO))-({TO}))->wsparcie(TO);
} 

void
attacked_by(object wrog)
{
    string imie = wrog->query_real_name();
    string opis = wrog->query_nonmet_name();

    if( !wrog->query_npc() )
    {
        WANTED->dodaj_wroga(imie,opis);
        set_alarm(0.5, 0.0, "okrzyk");
    }

    set_alarm(0.0, 0.0, "pomocy");

    return ::attacked_by(wrog);
}

public void
do_die(object killer)
{
    string imie = killer->query_real_name();
    string opis = killer->query_nonmet_name();

    if( !killer->query_npc() )
    {
        WANTED->dodaj_wroga(imie,opis);
    }

    ::do_die(killer);
}

public int
block_exit()
{
    int r = random(100);
    string action = query_verb();
    
    if ( !sizeof(({ TP }) & query_enemy(-1)) )
    {
        return 0;
    }

    if ( TP->query_fatigue()<=10 )
    {
        write("Jestes zbyt zmeczon"+TP->koncowka("y","a")+" aby to zrobic.\n");
        return 1;
    }

    if ( r <= 97 )
    {
        TP->set_fatigue(TP->query_fatigue()-10);    
        TP->catch_msg(QCIMIE(TO,PL_MIA) + " blokuje ci droge ucieczki.\n");    
        tell_room(environment(TO),QCIMIE(TO,PL_MIA) + " blokuje " +
                  QIMIE(TP,PL_CEL) + " droge ucieczki.\n",({TP}));
        return 1;
    }
    return 0; 
}

public void
init_living()
{
    string *exit;
    int size;
    
    ::init_living();

    if (environment(TO))
    {
        exit = environment(TO)->query_exit_cmds();
        size = sizeof(exit);
        while (--size >= 0) { add_action(block_exit, exit[size]); }
    }
}

void
uzbrojony(int czy_uzbrojony)
{
}

void
okrzyk()
{
    command("krzyknij Alarm!! Do broni!!");
}
