inherit "/std/monster";
inherit "/cmd/std/command_driver";
inherit "/std/act/action";

#include "czarne_slonce.h"
#include <ss_types.h>
#include <macros.h>
#include <stdproperties.h>
#include <wa_types.h>

#define SOUL "/d/Imperium/Czarne_slonce/obj/shadow.c"

#define TO this_object()
#define TP this_player()

void
dobywaj()
{
TO->command("dobadz wszystkich broni");
}

void
create_monster()
{
  ustaw_odmiane_rasy(({"typ","typa","typowi","typa","typem","typie"}),({"typy","typow","typom","typow","typami","typach"}),PL_MESKI_OS);

  dodaj_przym(({"wredny"}),({"wredni"}));

  set_long("Typ z pod ciemnnej gwiazdy.\n");
  set_living_name("straznik_czarnego_slonca");

  set_gender(G_MALE);

  add_prop(CONT_I_HEIGHT, 240);
  add_prop(CONT_I_WEIGHT, 200000);
  add_prop(NPC_M_NO_ACCEPT_GIVE, 1);
  add_prop(LIVE_I_NEVERKNOWN, 1);

  set_skill(SS_UNARM_COMBAT, 300);
  set_skill(SS_DEFENCE, 300);
  set_skill(SS_BLIND_COMBAT, 100);
  set_skill(SS_WEP_KNIFE, 300);
  set_skill(SS_2H_COMBAT, 300);

  set_stats(({600, 600, 600, 80, 80, 200}));
  
  set_hp(20000);
  set_alignment(-1200);

  enable_commands();
    
  setuid();
  seteuid(getuid());
  clone_object("/d/Imperium/Kraina/ORKI/bronie/sztylet1.c")->move(TO);
  clone_object("/d/Imperium/plomien/dagger.c")->move(TO);
  set_alarm(1.0,0.0,"dobywaj");    

  set_aggressive("@@atak");    
}

public int
block_exit()
{
  int r;
  string  action = query_verb();
    
  r = random(100);
    
  if (TP->query_prop("wrog_czarne_slonce"))
    {
      if ( r <= 100 )
        {    
	  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()
{
  ::init_living();
  
  string *exit;
  int size;

  if (environment(this_object()))
    {
      exit = environment(this_object())->query_exit_cmds();
      size = sizeof(exit);
      while (--size >= 0)
	add_action(block_exit, exit[size]);
    }
}


void
attacked_by( object ob )
{
  ob->add_prop("wrog_czarne_slonce",1);

  set_alarm(1.0, 0.0, "pomocy");
    
  return ::attacked_by(ob);
}

int
atak()
{
  if (TP->query_prop("wrog_czarne_slonce"))
    return 1;
  
  return 0;    
}

public void
pomocy()
{
  (all_inventory(environment(this_object())) - ({ this_object() }))->wesprzyj(this_object());
}

public void
wesprzyj(object ob)
{
  TO->command("wesprzyj " + OB_NAME(ob));  
} 

public void
do_die(object killer)
{
  write_file("/d/Imperium/Czarne_Slonce/npc/log"," " + killer->query_real_name() + " zajebal typa.\n");	
  ::do_die(killer);
}
