/*
 * KLAMRA - GUILD ITEM TROPICIELI Z AVERLANDU
 * by SIRO
 */
inherit "/std/object";
inherit "/cmd/std/command_driver.c";
#include "tropiciele.h"
#include <cmdparse.h>
int zalozony;
int wear();
int remove();
string *material();
string wykonana();
string zdobienia();
string zdobienia2();
void
create_object()
{
   ustaw_nazwe(({"klamra","klamry","klamrze","klamre","klamra","klamrze"}),
               ({"klamry","klamer","klamrom","klamry","klamrami","klamrach"}),
               PL_ZENSKI);
   dodaj_przym(({material()[0]}),({material()[1]}));
   add_name("_klamra_tropicieli_");
   set_long("@@dlugi_opis");
   add_prop(OBJ_I_WEIGHT,   5000);
   add_prop(OBJ_I_VOLUME,    500);
   add_prop(OBJ_I_VALUE,   24000);
}
string
dlugi_opis()
{
        return ("Owa klamra, wykonana " + wykonana() +" posiada "+
              zdobienia() + " i jest znakiem twej przynalez"+
              "nosci do Tropicieli z Averlandu. Delikatna, "+
              "nie dbija swiatla i przypomina ci wspaniale "+
              "chwile jakie dotychczas przytrafily ci sie "+
              "w zgromadzeniu. Po jej wewnetrznej stronie "+
              "widzisz skromny napis <tpomoc>.\n");
}
dodaj_propy()
{
    add_prop(OBJ_M_NO_SELL, "Nikt nie kupi od ciebie klamry!\n");
    add_prop(OBJ_M_NO_DROP, "Nie mozesz wyrzucic swojej klamry.\n");
    add_prop(OBJ_M_NO_GIVE, "Nie mozesz nikomu dac klamry.\n");
    add_prop(OBJ_M_NO_STEAL, 1);
    add_prop(OBJ_M_NO_GET,"Nie jestes w stanie podniesc klamry.\n");
}
usun_propy()
{
    remove_prop(OBJ_M_NO_SELL);
    remove_prop(OBJ_M_NO_DROP);
    remove_prop(OBJ_M_NO_GIVE);
    remove_prop(OBJ_M_NO_STEAL);
    remove_prop(OBJ_M_NO_GET);
}
int
wear()
{
    if (this_player()->query_subloc_obj(KLAMRA_SUBLOC))
        { remove_object(); return 1;}
    this_player()->add_subloc(KLAMRA_SUBLOC, this_object());
    move(TP, KLAMRA_SUBLOC);
    zalozony=1;
    return 1;
}
int
remove()
{
    this_player()->remove_subloc(KLAMRA_SUBLOC);
    zalozony=0;
    move(TP);
    return 1;
}
void
enter_env(object ob, object from)
{
    ::enter_env(ob, from);
    dodaj_propy();
    wear();
}
string
show_subloc(string subloc, object on_obj, object for_obj)
{
        if (on_obj == for_obj)
      return "Piekna "+short()+" posiada "+ zdobienia() +
             "i swiadczy o twej przynaleznosci do "+
             "Tropicieli z Averlandu.\n";
      return "W klapie przypieta ma "+short(PL_BIE)+
             " posiadajaca " + zdobienia2() + ", ktora "+
             "swiadczy o przynaleznosci do Tropicieli "+
             "z Averlandu.\n";
}
string zdobienia()
{
    switch(this_player()->query_stat(SS_RACE))
    {
        case 1..85    : return "maly srebrny listek,";
        case 86..95   : return "wyryty lisc klonu,";
        case 96..105  : return "maly, zloty wizerunek glowy wilka,";
        case 106..115 : return "platynowy kwiat lotosu,";
        case 116..130 : return "wiele malych diamentow,";
        default       : return "patrzaca na ciebie twarz Taala - "+
                               "Boga przyrody i dzikich miejsc,";
    }
}
string zdobienia2()
{
    object player = environment(TO);
    switch(player->query_stat(SS_RACE))
    {
        case 1..85     : return "maly srebrny listek";
        case 86..95    : return "ledwo dostrzegalny wyryty lisc klonu";
        case 96..105   : return "wyrazny lecz maly, wykonany ze zlota "+
                                "wizerunek glowy wilka";
        case 106..115  : return "wyrazny, platynowy kwiat lotosu";
        case 116..130  : return "wiele, mieniacych sie w kazdym promieniu "+
                                "swiatla, malych diamentow";
        default        : return "patrzaca na ciebie twarz Taala - "+
                                "Boga przyrody i dzikich miejsc";
    }
}
string
query_auto_load ()
{
        return MASTER_OB(this_object());
}
int no_way(string what)
{
   if (what=="klamre")
       {
             write("Chyba nie chcesz zniszczyc znaku przynaleznosci do "+
                    "Tropicieli?\n");
             say(QCIMIE(this_player(),PL_MIA)+" gwaltownie lapie za klamre, "+
                    "lecz po chwili wyrownuje poly ubrania delikatnie sie "+
                    "usmiechajac.\n");
             return 1;
       }
  return 0;
}
void init()
{
   ::init();
   add_action(no_way, "zdejmij");
   add_action("usun", "usun");
}
string *material()
{
    switch(this_player()->query_stat(SS_RACE))
    {
        case 0..20   : return ({"drewniany","drewniani"});
        case 21..35  : return ({"stalowy","stalowi"});
        case 36..45  : return ({"srebrny", "srebrni"});
        case 46..80  : return ({"platynowy","platynowi"});
        case 81..90  : return ({"adamantytowy", "adamantytowi"});
        case 91..120 : return ({"mithrylowy", "mithrylowi"});
        default      : return ({"gwiezdny", "gwiezdni"});
    }
}
string
wykonana()
{
   int i;
   i = this_player()->query_stat(SS_RACE);
   switch(i)
   {
     case 0..20  : return "z drewna";
     case 21..35 : return "ze stali";
     case 36..45 : return "ze srebra";
     case 46..80 : return "z platyny";
     case 81..90 : return "z adamantytu";
     case 91..120: return "z mithrylu";
     default     : return "z gwiezdnej stali";
   }
}
int
wywal(object kto)
{
    string s;
 if (kto->wywalenie_z_trop(kto))
 {
   write("Wywaliles "+QIMIE(kto, PL_BIE)+" z Gildii Tropicieli.\n");
   kto->catch_msg(QCIMIE(TP, PL_MIA)+ " wyrzucil cie z Gildii Tropicieli.\n");
   tell_room(Env, QCIMIE(TO,PL_MIA)+" wyrzucil "+QIMIE(kto, PL_BIE)+" z Gildii Tropicieli.\n", ({kto, TP}));
   kto->set_exp_combat(4*(kto->query_exp_combat())/5);
   kto->remove_cmdsoul(SOUL);
   kto->update_hooks();
   kto->remove_prop(CZ_PLAYER_OPUSZCZA_GILDIE);
   GILDIA->remove_imie(kto->query_real_name());
   (kto->query_subloc_obj(KLAMRA_SUBLOC))->remove_object();
   s=sprintf("%-16s:%s \n",kto->query_real_name(),ctime(time()));
   write_file(LEAVE,s);
   return 0;
 }
  return 1;
}
int
usun(string str)
{
    object *kogo;
    if (TP->query_przywodca()!=TP->query_real_name()) return 0;
    if (!str)
        return notify_fail("Kogo wyrzucic?\n");
    kogo=parse_this(str, "%l:"+PL_DOP);
    if (!sizeof(kogo))
        return notify_fail("Kogo usunac z gildii?\n");
    if (sizeof(kogo)>1)
        return notify_fail("Usuwac mozesz tylko pojedynczo.\n");
    if (kogo[0]->query_guild_name_race()!=GUILD_NAME)
        return notify_fail(QCIMIE(kogo[0], PL_MIA) +" nie jest Tropicielem.\n");

    if (!interactive(kogo[0]))
       return notify_fail("Nie mozesz go usunac!\n");
    wywal(kogo[0]);
    return 1;
}

