

int konc=0;
int konc2=0;
object summon;


void
eat_mana( int ile )
{
TP->set_mana(TP->query_mana()-ile);
}


void
hurt_all( int dem, string str)
{
int i;
object *livs = all_inventory(environment(TP));
livs = FILTER_LIVE(livs);
    if (!str)
	str="";

    for ( i = 0; i < sizeof(livs); i++ )
	{
	if (livs[i] != TP)
	    {
	    if (!livs[i]->query_prop("mag"))
	    livs[i]->reduce_hit_point(dem);
	    livs[i]->attack_object(TP);	
	    livs[i]->catch_msg(""+str+"");
	    if (livs[i]->query_hp()<1)
               livs[i]->do_die(TP);
	    }
	}

}


int
query_chance( int spell )
{
if (TP->query_prop("szef_magow") && spell > 2 )
    return 80;

    if (TP->query_stat(7) > 135 && spell > 3 )
	return 70;
    
	
    switch(spell)
	{
	
	case 0:
	return 100;
	break;	
	    case 1:
	    return 90;
	    break;
		case 2:
		return 80;
		break;
		    case 3:
		    return 70;
		    break;
		         case 4:
			 return 60;
			 break;
			     case 5:
			     return 50;
			     break;
			case 6:
			return 40;
			break;
		    case 7:
		    return 30;
		    break;
		case 8:
		return 20;
		break;
	case 9:
	return 10;
	break;
default:
return 5;
break;	
}
}


void
think()
{
write("Koncentrujesz sie.\n");
konc=0;
}

void
think2()
{
write("Koncentrujesz sie.\n");
konc2=0;
}

void
hurt_player( object ob, int dem )
{
ob->reduce_hit_point(dem+TP->query_stat(3));
    if (ob->query_hp()<1)
	ob->do_die(TP);
}

void
apar( object ob )
{
ob->remove_stun();
think();
}








int
mzatrzymaj( string str )
{
int szansa;
int kosc;
object paral;
object *kogo = parse_this(str,"%l:"+PL_BIE);

szansa = query_chance( 5 );

    if (!sizeof(kogo))
	{
	write("Mzatrzymaj kogo?\n");
	return 1;
	}

    if ( TP->query_mana() < 400 )
	    {
	    write("Jestes zbyt wyczerpany.\n");
	    return 1;
	    }
	if ( konc == 1 )
	    {
	    write("Musisz troche odpoczac.\n");
	    return 1;
	    }
	
    kosc = random(100);
    
    set_alarm(35.0,0.0,"apar",kogo[0]);
    konc=1;
	if ( kosc > szansa )
	    {
	    write("Koncentrujesz swoje magiczne moce starajac sie "+
		"opanowac zaklecie, jednak nie udaje ci sie to.\n");
         eat_mana(400);
		return 1;
	    }

setuid();
seteuid(getuid());
paral=clone_object("/std/paralyze");
paral->set_fail_message("Zostales unieruchomiony magia.\n");
paral->set_stop_message("Odzyskujesz sily.\n");
paral->set_remove_time(7);

	TP->catch_msg("Paralizujesz "+QIMIE(kogo[0],PL_BIE)+".\n");
	tell_room(environment(TP),""+QCIMIE(TP,PL_MIA)+" rzuca "+
	"na "+QIMIE(kogo[0],PL_BIE)+" jakies zaklecie, ktore "+
	"znacznie spowalnia "+kogo[0]->koncowka("jego","jej")+" "+
	"ruchy calkowicie unieruchamiajac.\n",({TP,kogo[0]}));
	kogo[0]->catch_msg(""+QCIMIE(TP,PL_MIA)+" rzuca na "+
	"ciebie zaklecie, a ty nagle przestajesz sie ruszac.\n");
	
	paral->move(kogo[0]);
	kogo[0]->add_stun();
	TP->attack_object(kogo[0]);


return 1;
}



int
mstrzel( string str )
{
int szansa;
int kosc;
object *kogo = parse_this(str,"'w' %l:"+PL_BIE);

szansa = query_chance( 3 );

    if (!sizeof(kogo))
	{
	write("Mstrzel kogo?\n");
	return 1;
	}

	if ( TP->query_mana() < 20 )
	    {
	    write("Jestes zbyt wyczerpany.\n");
	    return 1;
	    }
	if ( konc == 1 )
	    {
	    write("Musisz troche odpoczac.\n");
	    return 1;
	    }
	
    kosc = random(100);
    
    set_alarm(20.0,0.0,"think");
    konc=1;
	if ( kosc > szansa )
	    {
	    write("Koncentrujesz swoje magiczne moce starajac sie "+
		"opanowac zaklecie, jednak nie udaje ci sie to.\n");
		eat_mana(20);
		return 1;
	}
	
	TP->catch_msg("Koncentrujesz sie.\n"+
		    "Godzisz "+QIMIE(kogo[0],PL_BIE)+" blyskawica! "+
		    "W powietrze wdaje sie nieprzyjemny zapach "+
		    "palonego ciala.\n");
		    
	tell_room(environment(TP),""+QCIMIE(TP,PL_MIA)+" wystawia "+
	"reke w kierunku "+QIMIE(kogo[0],PL_DOP)+", a po chwili z jego "+
	"dloni wystrzeliwuje jaskrawa blyskawica, ktora trafia "+
	""+kogo[0]->koncowka("go","ja")+" powaznie raniac.\n",({TP,kogo[0]}));

	kogo[0]->catch_msg(""+QCIMIE(TP,PL_MIA)+" wystawia reke w twoim "+
	"kierunku, a zen wystrzeliwuje jaskrawa blyskawica, ktora "+
	"trafia w ciebie! Potezny wstrzas oslabia cie nieznacznie.\n");

	hurt_player( kogo[0], 400 );
	TP->attack_object(kogo[0]);
	eat_mana(20);
	

    return 1;
}






int
mspal( string str )
{
int szansa;
int kosc;
object *kogo = parse_this(str,"%l:"+PL_BIE);

szansa = query_chance( 3 );

    if (!sizeof(kogo))
	{
	write("Mspal kogo?\n");
	return 1;
	}

	if ( TP->query_mana() < 10 )
	    {
	    write("Jestes zbyt wyczerpany.\n");
	    return 1;
	    }
	if ( konc == 1 )
	    {
	    write("Musisz troche odpoczac.\n");
	    return 1;
	    }
	
    kosc = random(100);
    
    set_alarm(10.0,0.0,"think");
    konc=1;
	if ( kosc > szansa )
	    {
	    write("Koncentrujesz swoje magiczne moce starajac sie "+
		"opanowac zaklecie, jednak nie udaje ci sie to.\n");
		eat_mana(20);
		return 1;
	}
	
	TP->catch_msg("Koncentrujesz sie.\n"+
		    "Pchniesz ognista kule prosto w "+QIMIE(kogo[0],PL_BIE)+" "+
		    "raniac swoja ofiare.\n");
		    
	tell_room(environment(TP),""+QCIMIE(TP,PL_MIA)+" wystawia "+
	"reke w kierunku "+QIMIE(kogo[0],PL_DOP)+", a po chwili z jego "+
	"dloni wystrzeliwuje ognista kula, ktora trafia "+
	""+kogo[0]->koncowka("go","ja")+" zadajac lekkie obrazenia.\n",({TP,kogo[0]}));

	kogo[0]->catch_msg(""+QCIMIE(TP,PL_MIA)+" wystawia reke twoim "+
	"kierunku, a zen wystrzeliwuje kula ognia, ktora "+
	"trafia cie nieznacznie raniac.\n");

	hurt_player( kogo[0], 200 );
	TP->attack_object(kogo[0]);
	eat_mana(10);
	

    return 1;
}







int
minferno( string str )
{
int szansa;
int kosc;

if (TP->query_stat(7) < 70)
return 0;

szansa = query_chance( 6 );

    if ( str != 0 )
	{
	write("Minferno?\n");
	return 1;
	}

	if ( TP->query_mana() < 850 )
	    {
	    write("Jestes zbyt wyczerpany.\n");
	    return 1;
	    }
	if ( konc2 == 1 )
	    {
	    write("Musisz troche odpoczac.\n");
	    return 1;
	    }
	
    kosc = random(100);
    
    set_alarm(120.0,0.0,"think2");
    konc2=1;
	if ( kosc > szansa )
	    {
	    write("Koncentrujesz swoje magiczne moce starajac sie "+
		"opanowac zaklecie, jednak nie udaje ci sie to.\n");
		eat_mana(20);
		return 1;
	}
	
	TP->catch_msg("Koncentrujesz sie.\n"+
		    "Wyrzucasz dlonie do gory, a spod ziemi z potezna sila "+
		    "wystrzeliwuja gorace plomienie, ktore w oka mgnieniu "+
		    "spowijaja cala okolice!\n");
		    
	hurt_all(1500,""+QCIMIE(TP,PL_MIA)+" wyrzuca dlonie do gory, "+
	"a spod ziemi z potezna sila wystrzeliwuja gorace plomienie, "+
	"ktore w oka mgnieniu spowijaja cala okolice wraz z toba!\n");

	eat_mana(550);
	

    return 1;
}


int
mprzyzwij( string str )
{
int szansa;
int kosc;
int i;
object *enemy;

    if (TP->query_stat(7) < 70)
	return 0;

szansa = query_chance( 6 );

if ( str == "zniszczenie" )
{
    write("Niszczysz magiczne polaczenie z golemem.\n");
    summon->remove_object();
    return 1;
}

    if ( str != "golema" )
	{
	write("Mprzyzwij co?\n");
	return 1;
	}

    if ( summon )
	{
	enemy=TP->query_enemy(-1);	
	summon->set_follow(TP,0.1,1);
	for ( i = 0; i < sizeof(enemy); i++ )
	    {
	    if (present(summon,environment(TP)))
		enemy[i]->attack_object(summon);
	    }	
	return 1;
	}
	
	


	if ( TP->query_mana() < 150 )
	    {
	    write("Jestes zbyt wyczerpany.\n");
	    return 1;
	    }
	if ( konc2 == 1 )
	    {
	    write("Musisz troche odpoczac.\n");
	    return 1;
	    }
	
    kosc = random(100);
    
    set_alarm(120.0,0.0,"think2");
    konc2=1;

    	if ( kosc > szansa )
	    {
	    write("Koncentrujesz swoje magiczne moce starajac sie "+
		"opanowac zaklecie, jednak nie udaje ci sie to.\n");
		eat_mana(150);
		return 1;
	}

	write("Wypowiadasz cztery magiczne runy, ktorych magiczne "+
	    "brzmienie otwiera olbrzymie wrota, a zen wypelza "+
	    "wielki, ognisty golem!\n");
	    
	tell_room(environment(TP),""+QCIMIE(TP,PL_MIA)+" wypowiada "+
	"cos w nieznanym ci jezyku, az nagle jego slowa trzesa "+
	"okolica. Po chwili nad ziemia pojawia sie portal, z ktorego "+
	"wypelza wielki, ognisty golem!\n",({TP}));

setuid();
seteuid(getuid());

    summon=clone_object(NPC+"golem");
    summon->set_follow(TP,0.1,1);
    summon->move(environment(TP));
    summon->add_prop("mag",1);


return 1;
}




