/* 
 * Kompania Krogulca
 *
 * Copyright(C):    Khazzar (jedrekz@pascom.pl)
 * Data:            26.08.2003
 * 
 */

#include "opisy_leczenia.h"

int zajety = 0;

void
init_living()
{
    ::init_living();
    add_action("poloz", "poloz");
}

int
poloz(string str)
{
    object paraliz;

    notify_fail("Poloz sie gdzie?\n");
    if ( str != "sie na stole" ) return 0;

    if ( !ENGINE->query_member(TP) )
    {
        TO->command("usmiech paskudnie");
        TO->command("' do " + OB_NAME(TP) + " Przykro mi stary, ale ja " +
                    "zajmuje sie jedynie zolnierzami Kompanii!");
        return 1;
    }

    if ( TP->query_max_hp() == TP->query_hp() )
    {
        TO->command("parsknij gniewnie");
        TO->command("' do " + OB_NAME(TP) + " Znow zraniles sie w " +
                    "paluszek? Zjezdzaj stad i nie zawracaj mi glowy!");
        return 1;
    }

    if ( zajety)
    {
        TO->command("popatrz przelotnie na " + OB_NAME(TP)); 
        TO->command("' do " + OB_NAME(TP) + " Poczekaj chwile, zaraz sie " +
                    "toba zajme.");
        return 1;
    }

    setuid();
    seteuid(getuid());
        
    paraliz=clone_object(N_OBJ + "paraliz_leczenie");
    paraliz->move(TP);

    TP->add_prop(LIVE_S_EXTRA_SHORT, " lezacy na stole"); 
    zajety = 1;

    set_alarm( 1.0,0.0,"leczenie");

    TP->catch_msg("Niepewnie podchodzisz do stolu operacyjnego i " +
                  "kladziesz sie na nim ostroznie.\n");
    tell_room(environment(TP),QCIMIE(TP,PL_MIA) + " niepewnie podchodzi " +
              "do stolu operacyjnego i kladzie sie na nim ostroznie.\n", 
              ({TP}));

    TO->command("zatrzyj"); 

    return 1;
}

void
leczenie()
{
    if ( TP->query_hp() == TP->query_max_hp() )
    {
        set_alarm( 0.1,0.0,"wyleczony");
        return;
    }

    if ( TP->query_hp() < TP->query_max_hp() / 2 )
        set_alarm( 0.1,0.0,"lecz_ciezka_rane_zacznij");
    else
        set_alarm( 0.1,0.0,"lecz_lekka_rane_zacznij");
}

void
wyleczony()
{
    TO->command("' do " + OB_NAME(TP) + " Gotowe. Mozesz juz wstac."); 
    TP->add_prop("wyleczony", 1);
    set_alarm( 30.0,0.0,"zrzuc_ze_stolu", TP);
}

int
wstan()
{
    int opcja;

    if ( TP->query_prop("wyleczony") )
    {
        TP->remove_prop("wyleczony");
        TP->catch_msg("Powoli wstajesz.\n");
        tell_room(environment(TP),QCIMIE(TP,PL_MIA) + " powoli podnosi sie " +
                  "ze stolu operacyjnego.\n", ({TP})); 
        TP->remove_prop(LIVE_S_EXTRA_SHORT, " lezacy na stole"); 
        zajety = 0;
        return 0;
    }
    else
    {
        opis_wstan(1);
        return 1;
    }
}

void
zrzuc_ze_stolu( object kogo )
{
    object *inv;
    int i;

    if ( TP == kogo && TP->query_hp() == TP->query_max_hp() ) 
    {
        TO->command("emote przeklina siarczyscie");
        TO->command("' do " + OB_NAME(TP) + " To nie jest przytulek! Won mi " +
                    "ze stolu!");
        TP->remove_prop("wyleczony");
        TP->catch_msg(QCIMIE(TO,PL_MIA) + " zrzuca cie ze stolu.\n");
        tell_room(environment(TP),QCIMIE(TO,PL_MIA) + " zrzuca " 
                  + QCIMIE(TP,PL_BIE) + " ze stolu.\n", ({TP}));
        TP->remove_prop(LIVE_S_EXTRA_SHORT, " lezacy na stole"); 
        zajety = 0;

        inv = deep_inventory(TP);
        for (i= 0; i < sizeof(inv); i++)
            if (inv[i]->query_paraliz_leczenie())
                inv[i]->remove_object();
    }
}
