/* by Flex '97 */

   
inherit "/d/Imperium/std/monster";

#include <money.h>
#include <ss_types.h>
#include <stdproperties.h>
#include <macros.h>
#include <flex.h>
#include <wa_types.h>
// #include "/d/Imperium/silvy/silvy.h"

#define QUEST_GRUPA	0
#define QUEST_BIT	4
#define QUEST_EXPY	999

#define QUEST_LOG                  "/d/Imperium/flex/quest.log"
#define PLAYER_I_GOT_ZOLTAN_QUEST  "_player_i_got_zoltan_quest" /* ! */
#define CAEN_U_MNIE_KLONOWANY      "_caen_i_przyjmuje_to"
#define PLAYER_I_WIN_GAME          "_player_i_win_imperium_game"
#define PLAYER_I_KILLED_CAEN       "_player_i_killed_imperium_caen"
#define MAM_QUESTA_CAENA           "_player_i_got_inperim_quest_caena" 
#define PLAYER_I_GAVE_COINS        "_player_i_gave_coins"

int quest_wziety, quest_zrobiony;
object medal;

void
create_monster()
{ 
add_cmd_item( ({"kosci", "koscmi"}),({"rzuc", "rzucmy"}), "@@rzuc");    
    ustaw_imie( ({"caen", "caena", "caenowi", "caena", "caenem", 
        "caenie" }), PL_MESKI_NZYW);
        
    dodaj_nazwy(({"rycerz", "rycerza", "rycerzowi", "rycerza", "rycerzem",
    	"rycerzu"}), ({"rycerze", "rycerzy", "rycerzom", "rycerzy",
    	"rycerzami", "rycerzach"}), PL_MESKI_NZYW);
    	
    ustaw_shorty(({"barczysty rycerz", "barczystego rycerza", "barczystemu rycerzowi",
                   "barczystego rycerza","barczystym rycerzem", "barczystym rycerzu"}), 
                ({"rycerze", "rycerzy", "rycerzom", "rycerzy", 
                  "rycerzami", "rycerzach"}),PL_MESKI_OS);
                  
    set_long("Barczysty rycerz nie wyglada na zadowolonego z dzisiejszego dnia. " +
        "Stoi oparty o mur i rozmysla, a moze tylko udaje? " +
        "Jest wysoki i poteznie zbudowany, wyglada jak doswiadczony woj. " +
        "Tylko, twarz nie pasuje do jego sylwetki. " +
        "Ma wyrazne rysy i jest spokojna, a wysokie czolo dodaje jej dostojenstwa. " +
        "To nie moze byz twarz bezlitosnego, krwiopijczego, brutalnego mordecy.\n");
    ustaw_odmiane_rasy(PL_MEZCZYZNA);
        
    MONEY_MAKE_SC(255)->move(this_object());

    add_prop(CONT_I_WEIGHT, 85000);
    add_prop(CONT_I_HEIGHT, 185);
    
    set_skill(SS_DEFENCE, 25 + random(10));
    set_skill(SS_WEP_SWORD, 25 + random(10));
    set_skill(SS_UNARM_COMBAT, 40 + random(10));
    set_skill(SS_PARRY, 35 + random(10));
    
    set_stats(({60, 50, 75, 55, 60, 60}));
    
    set_chat_time(25);
    add_chat("Alez nuda jak nie ma wojny.\n");
    add_chat("Przydal by sie jakis turniej.\n");
    add_chat("Ej ty nie masz ochoty sie zmierzyc?\n");
    add_chat("Tak, chyba pojde do karczmy, tam sie zabwie.\n");
    add_chat("Nie uwazasz, ze jest tu zbyt spokojnie?");
    
    set_cchat_time(10);
    add_cchat("Oz ty!");
    add_cchat("Ha, policze ci tewe gnaty!");
    add_cchat("Znikaj zoltodziobie!");
    add_cchat("Myslisz, ze sobie ze mna poradzisz?");
    
    set_act_time(21);
    add_act("emote spoglada z zaciakawieniem po sali.\n");
    add_act("emote usmiecha sie do przebiegajacego obok dziecka.\n");
    add_act("emote kladzie reke na rekojesci miecza.\n");
    add_act("emote nerwowo spoglada wokol.\n"); 

    add_ask( ({"medalion","medalik"}),  VBFC_ME("re_medalion"));
    add_ask( ({"gre", "reguly", "reguly gry"}), VBFC_ME("re_reguly"));
    add_ask( ({"nagrode","zamiane"}), VBFC_ME("renagroda"));
    set_default_answer(VBFC_ME("odpowiedz_standardowa"));

    medal = clone_object("/d/Imperium/flex/medalion.c");
    medal->move(this_object());
}

int
mobile_deny_objects()
{
    return 0;
}


void
add_introduced(string imie)
{
    set_alarm(2.0,0.0,"return_intro", imie);
}

varargs void 
return_intro(string kto)
{

    command("przedstaw sie " + find_player(kto)->query_real_name(PL_CEL));
}

 /* --------------------------------------------------------------- */
 /*  Standardowa odpowiedz                                          */
 /* --------------------------------------------------------------- */
 
string
odpowiedz_standardowa()
{
     command("emote spoglada na ciebie krotko.");
     command("powiedz Nie mam pojecia o co ci chodzi.");
     return "";
}     

 /* --------------------------------------------------------------- */
 /*  Odpowiedz na pytanie o nagrode                                 */
 /* --------------------------------------------------------------- */
 
string
renagroda()
{
     if (!this_player()->query_prop(PLAYER_I_GOT_ZOLTAN_QUEST))
    {
         command("powiedz O czym ty mowisz?");
         command("emote mruga oczami ze zdziwienia.");
         return "";
     }    
   command("powiedz Po prostu zagramy.");
   return "";
}      

 /* --------------------------------------------------------------- */
 /* Glowna procedura odpowiadajaca za przydzielenie graczowi questa */
 /* --------------------------------------------------------------- */

string
re_medalion(int chat_nr)    
{   
    object gracz = this_player();
    
        /* sprawdzamy czy gracz nas slucha jeszcze */
    if (!present(gracz, environment(this_object())))
        {
            command("powiedz Poczekaj jeszcze nie skoczylem...");
            command("emote wzrusza ramionami.");
            command("emote wraca do rozmyslan.");
            return "";
        }
    
        if (this_player()->test_bit("imperium", QUEST_GRUPA, QUEST_BIT))
              {
                   command("emote zamysla sie przez chwile.");
                   command("powiedz Nie potrzebuje pomocy "+
                       "od ciebie. Znikaj.\n");
                   return "";
              }
              
         if (quest_wziety )
         {
         if (this_player()->query_prop(MAM_QUESTA_CAENA))
                   {
                       command("powiedz A mowilem ci zabys sluchal "+
                        "uwaznie! Nie bede sobie nadarmo strzepil "+
                        "jezyka.\n");
                       command("emote mruczy cos pod nosem.\n");
                       return ""; 
                   }
                   
                   command("emote drapie sie po brodzie.");
                   command("powiedz Dziekuje ale poradze sobie sam.\n");
                   return "";
          }
                  
          if (quest_zrobiony)
          {
                   command("powiedz Eee idz i mi tu glowy "+
                      "nie zawracaj.");
                   command("emote szczezy do ciebie zeby w krzywym usmieszku.\n");   
                   return "";
           }    
           else
           {   
              command("emote spoglada na ciebie badawczo.");
              command("powiedz Medalion? Pewnie znowu Zoltan sie wyglupia.");
              command("usmiechnij sie");
              command("powiedz Sluchaj uwaznie co ci powiem.");
              command("powiedz  Zoltan to klamca, medalion jest moj. "+
               "Nie musialem go krasc, sam mi go dal. "+
               "Powiedz no, chcesz medalion, tak? "+
     	       "Ale co ty mozesz dac mi w zamian. ");
              command("powiedz moze umilisz mi wieczor i zagramy? "+
               "Zagrajmy w kosci a postawie medalion, nie od razu ale postawaie.\n");
              command("emote mowi : Jesli chcesz grac to zdradze ci reguly gry" +
                      "jesli nie to znikaj mi z oczu.\n");
              
         this_player()->add_prop(MAM_QUESTA_CAENA, 1);	
              quest_wziety = 1;
        }    
   return "";
}    

string
daj_medalion()
{
   string komu = this_player()->lower_case(query_name(PL_CEL));
   TP->add_prop(PLAYER_I_WIN_GAME, 1);     
   command("powiedz ubawiles mnie ta gra. Oto on, medalion.");             
   command("daj medalion " + komu);
   quest_zrobiony=1;
   return"Jak powiedzialem tak sie stalo. Widzisz, ze jestem ucziwy.";
}

string
rzuc()
{
   int los,jednaC, drugaC, trzeciaC, jednaG, drugaG, trzeciaG;

   if (this_player()->query_prop(PLAYER_I_GAVE_COINS))
   {
      jednaC   = random(5) + 1;
      drugaC   = random(5) + 1;
      trzeciaC = random(5) + 1;

      jednaG   = random(5) + 1;
      drugaG   = random(5) + 1;
      trzeciaG = random(5) + 1;
      los = random(2);
 
      remove_prop(PLAYER_I_GAVE_COINS);

      if (jednaC + drugaC + trzeciaC <= jednaG + drugaG + trzeciaG)
      {
         if ((jednaC + drugaC + trzeciaC) == (jednaG + drugaG + trzeciaG))
         {
            command("powiedz przy remisie ja wyrgywam.");
            command("emote usmiecha sie diabolicznie.");
         }
          return("Koles przegrales twe rzuty to : " + jednaG + ", " +
            drugaG + ", " + trzeciaG + ", niestety, a Caena : " + jednaC + 
            ", " + drugaC + ", " + trzeciaC + ". Miales pecha");   
       }
       else
       {
	    string komu = this_player->lower_case(query_name(PL_CEL));
            command("daj 50 srebrnych monet " + komu );
	    if (TOTAL_MONEY(this_object()) < 600)
  	    {
            command("powiedz nie mam kasy ale w nastepnej grze postawie " +
                    "madalion, dobra?");	
	    }          
            return("Poszczescilo Ci sie, twe rzuty to : " + jednaG + ", " +
              drugaG + ", " + trzeciaG + ", a Caena : " + jednaC + 
              ", " + drugaC + ", " + trzeciaC + ". Gratulacje");
            
            if (TOTAL_MONEY(this_object()) < 100)
            {
                daj_medalion;
            }	
        }
   }
   else
      {
          command("powiedz najpierw daj mi jakies pieniadze do gry.");
          return"";     
      }
}

// trigger zasstapiany przez cmd_item() :-)
int
gra_caena()
{
   command("powiedz Zaczynam ja rzucamy trzema koscmi.");
   command("powiedz jak chcesz rzucac koscmi to powiedz, ja mam kubek i ja " +
        "rzadze gra - ty tyko powiedz rzuc kosci i rzuce je na stol.");
}
string
re_reguly()
{
    if (this_player()->query_prop(PLAYER_I_GOT_ZOLTAN_QUEST))
    {
         command("powiedz juz ci wyjasniam. "+
          "Hmm, nie wymyslajmy za duzo, zagrajmy w kosci. " +
          "\n");

         gra_caena();

         return "";
    }
    else
    {
         command("powiedz Tak graja tu czasami w kosci i nie tylko. "+
          "Poszukaj a znajdziesz grajacych. " +
          "Z nimi zagraj, ja nie mam czasu teraz!\n");
    }
    return "";
}     
 
 /* --------------------------------------------------------------- */
 /*  Oddajemy nie potrzebne nam przedmioty                          */
 /* --------------------------------------------------------------- */   
 
void
oddaj_spowrotem(object ob, object from)
{
     command("daj " + OB_NAME(ob) + " " + from->query_real_name(PL_CEL));
     command("powiedz Nie prosilem o to.");
}

 /* --------------------------------------------------------------- */   
 


void
enter_inv(object ob, object from)
{

    int wartosc, ilosc_monet;
    string komu = this_player()->lower_case(query_name(PL_CEL));
//    string kto  = this_player()->lower_case(query_name(PL_NAZ));

    ::enter_inv(ob, from);

    
    if (from->query_prop(PLAYER_I_GOT_ZOLTAN_QUEST))
    {
        // ob->remove_prop(CAEN_U_MNIE_KLONOWANY);
        // return ;
        // }
    
      if (MASTER_OB(ob) == "/std/coins")
      {
	 ilosc_monet = ob->query_prop(OBJ_I_VALUE);        
         if ((ilosc_monet) > 490)
 	 {
         command("powiedz Dzieki star" + this_player()->koncowka("y", "a") +
            "!");
         command("usmiechnij sie szczesliwie");
         command("powiedz teraz mozesz rzucac.");
         TP->add_prop(PLAYER_I_GAVE_COINS, 1);                  
         }
         else
         {
         set_alarmv(0.5, 0.0, "oddaj_spowrotem", ({ ob, from}) );
         command("emote marszczy czolo.");
         command("powiedz to za malo, ja garam tylko przy stawce rownej " +
           "piecdziesiat sztuk srebra ni mniej ni wiecej, no moze wiecej" +
           " nie zaszkodzi.");
         if (ilosc_monet>0)
           command ("daj " + MONEY_TEXT(MONEY_SPLIT(ilosc_monet), PL_BIE) +
              " " + this_player()->query_nazwa(PL_CEL));
	 }
      }
    else
    set_alarmv(0.5, 0.0, "oddaj_spowrotem", ({ ob, from }) );

      return;
   }
}
