inherit "/std/monster";
inherit "/std/act/add_things";
inherit "/cmd/std/command_driver";
inherit "/lib/skill_raise.c";

#include "czarne_slonce.h"

void set_up_skills();
mapping skille;

void
create_monster()
{
  ustaw_imie(({"alfonso", "alfonsa","alfonsowi",
	"alfonsa", "alfonsem","alfonsie"}), PL_MESKI_OS);

  ustaw_odmiane_rasy(PL_CZLOWIEK);
  dodaj_przym("poblizniony","pobliznieni");
  dodaj_przym("twardy", "twardzi");

  set_long("Osobity trener Czarnego Slonca. Jesli jestes czlonkiem " +
	   "tej	organizacji to pomoze on ci poznac techniki walki " +
	   "i poruszania sie w cieniu, lecz jesli nie jestes z " +
	   "nim w komitywnie... drzyj...\n");

  set_gender(G_MALE);

  add_prop(CONT_I_HEIGHT,175);
  add_prop(CONT_I_WEIGHT,80000);
  add_prop(NPC_M_NO_ACCEPT_GIVE,1);


  set_skill(SS_UNARM_COMBAT, 80);
  set_skill(SS_DEFENCE, 70);
  set_skill(SS_PARRY, 70);
  set_skill(SS_BLIND_COMBAT, 70);
  set_skill(SS_WEP_CLUB, 80);
  set_stats(({200, 200, 200, 200, 200, 200, 200}));
  set_up_skills();  
}

void
add_introduced(string name)
{
  set_alarm(2.0, 0.0, "return_info", name);
}

varargs void
return_info(string kto)
{
  command("przedstaw sie " +
	  find_player(kto)->query_real_name(PL_CEL));
}

string
query_presentation()
{
  return "Alfonso, Mistrz dwoch ostrzy, Czempion Czarnego Slonca";
}

void
init_living()
{
  init_skill_raise();
  ::init_living();
}

int
non_member_train(string str)
{
  command("powiedz do " + OB_NAME(this_player()) +
	  " Odejdz! Nie mozesz tu cwiczyc!");
  
  return 1;
}

void
set_up_skills()
{
  skille = ([]);
  skille[SS_WEP_KNIFE]=({30,50,70,90});
  skille[SS_LOC_SENSE]=({20,35,45,60});
  skille[SS_TRACKING]=({20,30,40,50});
  skille[SS_AWARENESS]=({25,55,70,100});
  skille[SS_DEFENCE]=({30,55,65,80});
  skille[SS_PARRY]=({30,40,55,80});
  skille[SS_HIDE]=({25,30,60,80});
  skille[SS_SNEAK]=({25,40,60,80});
  skille[SS_UNARM_COMBAT]=({10,20,30,50});
  skille[SS_OPEN_LOCK]=({20,40,70,90});
  skille[SS_PICK_POCKET]=({20,40,70,90});
  skille[SS_ACROBAT]=({10,40,60,80});
  skille[SS_FR_TRAP]=({10,40,60,80});
  skille[SS_TRADING]=({10,40,60,80});
  skille[SS_APPR_MON]=({10,40,60,80});
  skille[SS_APPR_OBJ]=({10,40,60,80});
  skille[SS_APPR_VAL]=({10,40,60,80});
  skille[SS_2H_COMBAT]=({10,30,50,65});

  sk_add_train(SS_WEP_KNIFE,90);
  sk_add_train(SS_2H_COMBAT,65);
  sk_add_train(SS_LOC_SENSE,60);
  sk_add_train(SS_TRACKING,50);
  sk_add_train(SS_DEFENCE,80);
  sk_add_train(SS_PARRY,80);
  sk_add_train(SS_UNARM_COMBAT,50);
  sk_add_train(SS_AWARENESS,100);
  sk_add_train(SS_SNEAK,90);
  sk_add_train(SS_HIDE,90);
  sk_add_train(SS_OPEN_LOCK,90);
  sk_add_train(SS_PICK_POCKET,90);
  sk_add_train(SS_ACROBAT,80);
  sk_add_train(SS_FR_TRAP,80);
  sk_add_train(SS_TRADING,80);
  sk_add_train(SS_APPR_MON,80);
  sk_add_train(SS_APPR_OBJ,80);
  sk_add_train(SS_APPR_VAL,80);
}

public varargs int
sk_query_max(int snum)
{
  int statg, zm;

  if (!skille)
    set_up_skills();

  if (TP->query_prop("lider_czarnego"))
    zm = 3;
  else
    {
      statg = this_player()->query_stat(7);
      if (statg>=80)
        zm=3;
      else if (statg>=30)
        zm=2;
      else if (statg>=15)
        zm=1;
      else zm=0;
    }
  
  if(skille[snum])
    return skille[snum][zm];
  else
    ::sk_query_max(snum);
}
