//------------------------------------------------------------------------------
// < Titulo >
// Autor: Tropsy (Coding) & Donan (Graphics)
// Fecha: 13/10/02 (00:00:00h) Comienza la contrarreloj!
//------------------------------------------------------------------------------

program frikimars;
global
struct frases[14];
string frase;
string frase2;
string frase3;
end
int toyjefe;
int cierratexto;
int animesc;
int asdff;
int unloadmod;
int v2;
int gmirilla;
int moverse=0;
int simboloid;
int mahora;
int mataflag;
int graficotipo,graficotipoa1,graficotipoa2,graficotipoa3,graficotipoa4,graficotipoa5,
graficotipob1,graficotipob2,graficotipob3,graficotipob4,graficotipob5;
int grafondo;
int graficobola;
int dtocho1,dtocho2,dtocho3,dtocho4,dtocho5,dtocho6;
int dtornao1,dtornao2,dtornao3,dtornao4,dtornao5;
int gescudo;
int msonando;
int timerbajar;
int gplasmapq;
int gmusica;
int rayoahora;
int lmusica;
int grayo;
int gplasma1;
int gplasma2;
int gplasma3;
int fmusica;
int gomusica;
int marcian,smarcian;
int idcuadraomenu;
int dire,ybajar;
int energy;
int energyreal;
int hp;
int hpreal;
int restart_level;
int velscroll=2;
int close_things=0;
int blanco;
int slaser1;
int slaser2;
int parajefazo;
int nactual;
int stornao1;
int sexplo1;
int gris;
int gbarra;
int kill_energy;
int rojo;
int azul;
int score;
int xmoverse;
int vidas;
int idprota;
int vgraf;
int tespecial;
int gc,gz,gi,gs,gt,gr,genergia,gvextra,gdollar;
int bicho11,bicho12,bicho13,bicho14,bicho15;
int bicho21,bicho22,bicho23,bicho24,bicho25;
int bicho31,bicho32,bicho33,bicho34,bicho35;
int quedan;
int meteo1,meteo2,meteo3;
int vextra=0,c=1,t=2,r=3,s=4,i=5,energia=6,zeta=7,cash=8;
int explos0,explos1,explos2,explos3,explos4,explos5,explos6,explos7,explos8,explos9;
int invencitime=0;
int reversetimer=0;
int musica,musicaanterior,mrand;
int disparoen;
int nivel;
int pulsadomenu;
int opcionmenu;
int gcuadrao;
int smusica;
int pcreditos;
               int nivel1[30]=
               0,1,1,1,1,1,1,1,1,0,
               0,0,0,0,0,0,0,0,0,0,
               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1;
               int nivel2[30]=
               2,1,1,1,1,1,1,1,1,2,
               1,0,0,0,0,0,0,0,0,1,
               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1;
               int nivel3[30]=
               0,0,0,0,0,0,0,0,0,0,
               0,1,1,1,1,1,1,1,1,0,
               0,0,0,0,0,0,0,0,0,0;
               int nivel4[30]=
               1,1,1,1,1,1,1,1,1,1,
               -1,1,1,1,1,1,1,1,1,-1,
               -1,-1,1,1,1,1,1,1,-1,-1;
               int nivel5[30]=
               0,2,2,2,2,2,2,2,2,0,
               0,1,1,1,1,1,1,1,1,0,
               0,0,0,0,0,0,0,0,0,0;
               int nivel6[30]=
               0,0,2,2,2,2,2,2,0,0,
               0,1,1,1,1,1,1,1,1,0,
               2,1,2,1,1,1,1,2,1,2;
               int nivel7[30]=
               1,2,2,2,1,1,2,2,2,1,
               -1,1,2,1,-1,-1,1,2,1,-1,
               -1,-1,1,-1,-1,-1,-1,1,-1,-1;
               int nivel8[30]=
               2,0,2,0,2,0,2,0,2,0,
               0,2,0,2,0,2,0,2,0,2,
               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1;
               int nivel9[30]=
               0,2,0,2,0,2,2,2,0,0,
               0,2,2,2,0,0,2,0,0,0,
               0,2,0,2,0,2,2,2,0,0;
               int nivel10[30]=
               2,2,2,-1,2,2,2,-1,2,2,
               2,-1,2,-1,2,-1,2,-1,2,-1,
               2,2,2,-1,2,2,2,-1,2,2;
               int nivel11[30]=
               1,2,2,2,2,2,2,2,2,1,
               1,1,1,1,1,1,1,1,1,1,
               0,0,0,0,0,0,0,0,0,0;
               int nivel12[30]=
               2,0,0,0,0,0,0,0,0,2,
               2,1,1,1,1,1,1,1,1,2,
               2,2,2,2,2,2,2,2,2,2;
               int nivel13[30]=
               2,2,2,2,2,2,2,2,2,2,
               2,2,1,2,1,2,1,2,1,2,
               2,2,2,2,2,2,2,2,2,2;
               int nivel14[30]=
               1,2,2,2,1,1,2,2,2,1,
               2,2,2,2,2,2,2,2,2,2,
               2,2,2,2,2,2,2,2,2,2;
begin
restore_type=1;
dump_type=1;
set_mode(m320x200);
set_fps(24,3);
frases_de_los_creditos();

load_all();

/*pantalla_de_abajo(load_png("grp\snt.png"));
frame(4000);
put_screen(0,load_png("grp\snt.png"));
frame(5000);
pantalla_de_arriba(load_png("grp\fkm.png"));
frame(4000);*/
menu();
repeat
frame;

until(key(_esc))
end

process frases_de_los_creditos();
begin
frases[0].frase="Sonotone Team, por SFX vocales censurados%";
frases[0].frase2="por su alto contenido en palabros malsonantes%";
frases[1].frase="La nasa, por prestarnos un ordenador con%";
frases[1].frase2="tecnologia 486 para diseñar las nves%";
frases[2].frase="Bishop1, por ser el peluquero de los bichos%";
frases[3].frase="Los marcianos de la galaxia de raticulin, por%";
frases[3].frase2="dejarnos espiar las orgias que se realizan en%";
frases[3].frase3="el local La Piedra Angular, 28002, marte%";
frases[4].frase="SPAM----RAD----SPAM%";
frases[4].frase2="Nota: Donan me ha obligado a ponerlo, amenazando%";
frases[4].frase3="con hacerme aterradores graficos con el paint%";
frases[5].frase="El canal #playboy, por proveernos con inspiracion.%";
frases[6].frase="Operacion Triunfo,Pop Stars y similares,por%";
frases[6].frase2="destrozar el panorama musical nacional%";
frases[7].frase="Las madres y abuelas, sin las cuales este juego%";
frases[7].frase2="habria sido terminado hace un mes%";
frases[8].frase="Los señores de timofonica por su linea de banda%";
frases[8].frase2="lenta que ha obligado a trabajar semi-offline.%";
frases[9].frase="Bustamante por hacer que el llorar sea tan%";
frases[9].frase2="normal como el cagar, te vamos a matar PUTO!%";
frases[10].frase="Donan, por inventarse todas estas frases%";
frases[10].frase2="estupidas en el ultimo minuto%";
frases[11].frase="Tropsy por no dormir, cagar, mear, comer, sudar%";
frases[11].frase2="y en general por currar en 3 dias lo que otros%";
frases[11].frase3="no hacen en meses%";
frases[12].frase="Las spice girls por desaparecer en el momento%";
frases[12].frase2="perfecto para que nadie más se acuerde de ellas...%";
frases[12].frase3="MIERDA ya soy uno mas que se acuerda%";
frases[13].frase="Al señor Bill Gates,por hacer que windows XP tenga%";
frases[13].frase2="que tener un manual de instrucciones para%";
frases[13].frase3="ejecutar SOLO este juego...%";
frases[14].frase="Cronicas marcianas por obligar a donan a apagar%";
frases[14].frase2="la tele y ponerse a hacer graficos%";
end

process menu();
begin
put_screen(0,load_png("grp\fkm.png"));
frame(5000);
opcionmenu=1;
idcuadraomenu=simbolo(160,175,80,100);
write(0,35,175,4,"STORY");
write(0,95,175,4,"ENDLESS");
write(0,155,175,4,"TRAIN");
write(0,215,175,4,"CREDITS");
write(0,275,175,4,"EXIT");
close_things=0;
mataflag=0;
simboloid=ssimbolo((-25)+(60*opcionmenu),175,gcuadrao,100);
frame;
repeat
simboloid=ssimbolo((-25)+(60*opcionmenu),175,gcuadrao,100);
frame;
if((key(_right) || key(_up)) && pulsadomenu==0);
pulsadomenu=1;
opcionmenu++;
if(opcionmenu>5);
opcionmenu=1;
end
end
if((key(_left) || key(_down)) && pulsadomenu==0);
pulsadomenu=1;
opcionmenu--;
if(opcionmenu<1);
opcionmenu=5;
end
end
if(!(key(_alt) || key(_d) || key(_right) || key(_up) || key(_control) || key(_a) || key(_left) || key(_down)));
pulsadomenu=0;
end
if(key(_enter) || key(_control) || key(_alt));
if(opcionmenu==5);
exit("bye",0);
end
if(opcionmenu==1);
signal(idcuadraomenu,s_kill);
signal(simboloid,s_kill);
delete_text(all_text);
start(0);
signal(id,s_kill);
end
if(opcionmenu==2);
signal(idcuadraomenu,s_kill);
signal(simboloid,s_kill);
delete_text(all_text);
start(1);
signal(id,s_kill);
end
if(opcionmenu==3);
signal(idcuadraomenu,s_kill);
signal(simboloid,s_kill);
delete_text(all_text);
start(2);
signal(id,s_kill);
end
if(opcionmenu==4);
creditos();
signal(id,s_kill);
frame;
while(asdff==1);
frame;
end
end
end
until(close_things==1);

end
process creditos();
begin
asdff=1;
signal(idcuadraomenu,s_kill);
signal(simboloid,s_kill);
delete_text(all_text);
pcreditos=load_png("grp\creditos.png");
put_screen(0,pcreditos);
escribir(30,50,"PROGRAMACION: Tropsy%",0);
escribir(30,60,"GRAFICOS: Donan%",0);
escribir(30,75,"Gracias a...%",0);

repeat
frame;
if(animesc==0);
z=rand(0,15);
repeat
frame;
z=rand(0,15);
until(z!=x);
x=z;
escribir(30,50,"PROGRAMACION: Tropsy%",0);
escribir(30,60,"GRAFICOS: Donan%",0);
escribir(30,75,"Gracias a...%",0);
delete_text(all_text);
frame;
write(0,30,50,0,"PROGRAMACION: Tropsy");
write(0,30,60,0,"GRAFICOS: Donan");
write(0,30,75,0,"Gracias a...");
escribir(5,100,frases[z].frase,1);
escribir(5,110,frases[z].frase2,1);
escribir(5,120,frases[z].frase3,1);
end
animesc++;
if(animesc>240);
animesc=0;
end
until(key(_esc))
cierratexto=1;
delete_text(all_text);
frame(500);
delete_text(all_text);
clear_screen();
frame;
//unload_map(pcreditos);
menu();
end

process start(int tipo);
begin
nivel=1;
reversetimer=0;
invencitime=0;
tespecial=0;
vidas=3;
hp=100;
hpreal=100;
energy=0;
energyreal=0;
denergy();
animacionbicho(160,180);
clear_screen(); //pruebas
//fondo(95,95);
//fondo(190+95,95);
//fondo(95,190+95);
//fondo(190+95,190+95);
//fondo(95,-95);
//fondo(190+95,-95);
barra(60,15);
barra(320-60,15);
draw_energy(60,15);
draw_hp(320-60,15);
simbolo(313,15,62,40);
simbolo(3,15,65,40);
simbolo(113,15,67,40);
simbolo(135,15,61,40);
simbolo(150,15,72,40);
sespecial(135,15);
write_int(0,120,13,0,&vidas);
write_int(0,160,13,0,&score);
write_int(0,0,0,0,&fps);
unloadmod=0;
pon_musica(1);
smusica=1;
nactual=level(nivel,tipo);
repeat
frame;

if(hp<=0);
moverse=0;
close_things=1;
mataflag=1;
explosion(idprota.x,idprota.y,100);
clear_screen();
frame;
signal(idprota,s_kill);
signal(nactual,s_kill);
if(vidas>0);
frame;
close_things=0;
moverse=1;
mataflag=0;
reversetimer=0;
invencitime=0;
frame;
vidas--;
hp=100;
hpreal=100;
energy=0;
energyreal=0;
denergy();
animacionbicho(160,180);
//fondo(95,95);
//fondo(190+95,95);
//fondo(95,190+95);
//fondo(190+95,190+95);
//fondo(95,-95);
//fondo(190+95,-95);
barra(60,15);
barra(320-60,15);
draw_energy(60,15);
draw_hp(320-60,15);
simbolo(313,15,62,40);
simbolo(3,15,65,40);
simbolo(113,15,67,40);
simbolo(135,15,61,40);
simbolo(150,15,72,40);
sespecial(135,15);
smusica=1;
nactual=level(nivel,tipo);
else
delete_text(all_text);
close_things=0;
moverse=1;
mataflag=0;
reversetimer=0;
invencitime=0;
stop_song();
smarcian=0;
msonando=0;
unloadmod=1;
pantalla_de_abajo(load_png("grp\muerto.png"));
frame(4000);
put_screen(0,load_png("grp\muerto.png"));
frame(4000);
exit("You are dead. Game over.",0);
menu();
end
end

/*if((!is_playing_song() && smusica==1)||(smarcian==1 && msonando==0)||unloadmod==1);
	stop_song();
	if(smarcian==0);
		if(unloadmod==0);
			repeat
				mrand=rand(0,2);
			until(mrand!=musicaanterior);
			musicaanterior=mrand;
			if(mrand==0);
				musica=fmusica;
			end
			if(mrand==1);
				musica=lmusica;
			end
			if(mrand==2);
				musica=gomusica;
			end
			pon_musica(1);
		end
	else
		msonando=1;
		pon_musica(5);
	end
end*/
until(close_things==1);
end

process fondo(x,y);
begin
z=100;
graph=grafondo;
repeat
frame;
y+=velscroll;
if(y>=190*2)
y-=190+190+190;
end
until(close_things==1)
end

process pantalla_de_izq(int graph);
begin
x=-(320/2);
y=200/2;
repeat
x+=5;
frame;
until(x==320/2)
end

process pantalla_de_dcha(int graph);
begin
x=320+(320/2);
y=200/2;
repeat
x-=5;
frame;
until(x==320/2)
end

process pantalla_de_arriba(int graph);
begin
x=320/2;
y=-(200/2);
repeat
y+=5;
frame;
until(y==200/2)
end

process pantalla_de_abajo(int graph);
begin
x=320/2;
y=200+(200/2);
repeat
y-=5;
frame;
until(y==200/2)
end

process pon_musica(num);
begin
unload_song(musica);
if(num==1)
	musica=load_song("snd\pelea.xm");
end
if(num==2)
	musica=load_song("snd\good.xm");
end
if(num==3)
	musica=load_song("snd\luf2sini.xm");
end
if(num==4)
	musica=load_song("snd\gore.it");
end
if(num==5)
	musica=load_song("snd\marcian.wav");
end
play_song(musica,1);
end

process load_all();
begin

slaser1=load_wav("snd\laser.wav");
slaser2=load_wav("snd\laser9.wav");
stornao1=load_wav("snd\disparo9.wav");
sexplo1=load_wav("snd\explos10.wav");

load_fpg("fmars.fpg");

bicho11=1;
bicho12=2;
bicho13=3;
bicho14=4;
bicho15=5;
bicho21=6;
bicho22=7;
bicho23=8;
bicho24=9;
bicho25=10;
bicho31=11;
bicho32=12;
bicho33=13;
bicho34=14;
bicho35=15;
meteo1=16;
meteo2=17;
meteo3=18;
graficotipo=20;
graficotipoa1=20;
graficotipoa2=21;
graficotipoa3=22;
graficotipoa4=23;
graficotipoa5=24;
graficotipob1=25;
graficotipob2=26;
graficotipob3=27;
graficotipob4=28;
graficotipob5=29;
grafondo=30;
graficobola=31;
disparoen=32;
blanco=33;
gris=34;
gbarra=35;
azul=36;
rojo=37;
explos0=38;
explos1=39;
explos2=41;
explos3=42;
explos4=43;
explos5=44;
explos6=45;
explos7=46;
explos8=47;
explos9=48;
dtocho1=49;
dtocho2=50;
dtocho3=51;
dtocho4=52;
dtocho5=53;
dtocho6=54;
dtornao1=55;
dtornao2=56;
dtornao3=57;
dtornao4=58;
dtornao5=59;
gc=60;
gz=68;
gt=66;
genergia=62;
gi=63;
gr=64;
gs=65;
gvextra=67;
gescudo=69;
vgraf=70;
v2=71;
gdollar=72;
gplasmapq=73;
gplasma1=74;
gplasma2=75;
gplasma3=76;
grayo=77;
gmirilla=78;
gcuadrao=79;
end

process bicho(x,y);
private
int pulsado;
int accx,accx2;
int timerr;
int oldtimer;
int bitimer;
int bitimer2;
int pulsado2;
int pulsado3;
int pdisp;
int oldhp;
begin
z=-200;
size=65;
graph=graficotipo;
loop
if(invencitime>0);
escudo(x,y);
end
frame;
if(reversetimer>0);
reversetimer--;
end
if(invencitime>0);
estela(5);
if(hpreal<oldhp);
hpreal=oldhp;
end
invencitime--;
end
oldhp=hpreal;
if(energyreal>98);
energyreal=98;
end
if(hpreal>98);
hpreal=98;
end
if(energyreal<0);
energyreal=0;
end
if(hpreal<0);
hpreal=0;
end
if(energy>98);
energy=98;
end
if(hp>98);
hp=98;
end
if(energy<0);
energy=0;
end
if(hp<0);
hp=0;
end
bitimer2++;
if(bitimer2>4)
bitimer2=0;
end
if(bitimer2==4);
pdisp=1;
end
if(bitimer==0)
bitimer=1;
else
bitimer=0;
end
if(timerr!=oldtimer)
if(timerr==0);
graph=graficotipo;
end
if(timerr==1);
graph=graficotipoa1;
end
if(timerr==2);
graph=graficotipoa2;
end
if(timerr==3);
graph=graficotipoa3;
end
if(timerr==4);
graph=graficotipoa4;
end
if(timerr==5);
graph=graficotipoa5;
end
if(timerr==-1);
graph=graficotipob1;
end
if(timerr==-2);
graph=graficotipob2;
end
if(timerr==-3);
graph=graficotipob3;
end
if(timerr==-4);
graph=graficotipob4;
end
if(timerr==-5);
graph=graficotipob5;
end
end
oldtimer=timerr;
x+=accx;
x+=accx2;
if(timerr>0 && bitimer==0)
timerr--;
end
if(timerr<0 && bitimer==0)
timerr++;
end
if(accx2>0);
accx2--;
end
if(accx2<0);
accx2++;
end
if(accx>0)
accx--;
end
if(accx<0)
accx+=2;
end

if(moverse==1);
if((key(_e)||key(_k))&&energyreal>0);
drain_energy(1);
estela(3);
if(timerr<4)
timerr++;
else
timerr=4;
end
if(accx2<6);
accx2+=4;
else
accx2=10;
end
if(accx<6)
accx+=4;
else
accx=10;
end
end

if((key(_q)||key(_h))&&energyreal>0);
drain_energy(1);
estela(3);
if(timerr<4)
timerr++;
else
timerr=4;
end
if(accx2>-6);
accx2-=4;
else
accx2=-10;
end
if(accx>-6)
accx-=4;
else
accx=-10;
end
end

if(((key(_d)||key(_right)) && reversetimer<=0)||((key(_a)||key(_left)) && reversetimer>0));
if(timerr<4)
timerr++;
else
timerr=4;
end
if(accx<6)
accx+=4;
else
accx=10;
end
end
if(((key(_a)||key(_left)) && reversetimer<=0) || ((key(_d)||key(_right)) && reversetimer>0))
if(timerr>-4)
timerr--;
else
timerr=-4;
end
if(accx>-6)
accx-=4;
else
accx=-10;
end
end
if(x>300)
x=300;
end
if(x<20)
x=20;
end
if((key(_control)||key(_j)) && pulsado==0 & pdisp==1)
pdisp=0;
pulsado=1;
parpadeo(2);
disparo(x+4,y-5,graficobola);
end
if(key(_control)||key(_j))
pulsado=1;
else
pulsado=0;
end
if(tespecial==1);
if((key(_alt)||key(_u))& pulsado3==0 & energyreal>4)
drain_energy(30);
pulsado3=1;
parpadeo(1);
dtornao(x+4,y-12,accx);
end
if(key(_alt)||key(_u))
pulsado3=1;
else
pulsado3=0;
end
end
if(tespecial==0);
if((key(_alt)||key(_u))& pulsado2==0 & energyreal>4)
drain_energy(30);
pulsado2=1;
parpadeo(1);
dtocho(x+4,y-12);
end
if(key(_alt)||key(_u))
pulsado2=1;
else
pulsado2=0;
end
end
end
if(key(_esc))
exit("bye",0);
end
if(x>300)
x=300;

end
if(x<20)
x=20;
end
end
end

process disparo(x,y,graph)
begin
play_wav(slaser1,0);
z=-100;
repeat
frame;
y-=15;
until(y<-10||mataflag==1)
end

process dtocho(x,y)
private
int minitimer;
begin
play_wav(slaser2,0);
z=-100;
repeat
if(minitimer==0);
graph=dtocho1;
end
if(minitimer==2);
graph=dtocho2;
end
if(minitimer==4);
graph=dtocho3;
end
if(minitimer==6);
graph=dtocho4;
end
if(minitimer==8);
graph=dtocho5;
end
if(minitimer==10);
graph=dtocho6;
end
minitimer++;
frame;
y-=9;
until(y<-30||mataflag==1)
end

process dtornao(x,y,accx)
private
int minitimer;
begin
play_wav(stornao1,0);
z=-100;
repeat
x+=accx/2;
if(minitimer==0);
graph=dtornao1;
end
if(minitimer==3);
graph=dtornao2;
end
if(minitimer==6);
graph=dtornao3;
end
if(minitimer==9);
graph=dtornao4;
end
if(minitimer==12);
graph=dtornao5;
end
minitimer++;
frame;
y-=8;
until(minitimer>=15)
end

process parpadeo(int tipo);
begin
z=-260;
x=320/2;
y=200/2;
if(tipo==1);
graph=blanco;
else
graph=gris;
end
flags=4;
frame;
frame;
end

process barra(x,y);
begin
z=-254;
graph=gbarra;
repeat
frame;
until(close_things==1);
end

process draw_energy(x,y);
private
int energyold;
begin
repeat
if(energyold!=energy);
energyold=energy;
kill_energy=1;
end
frame;
from x=10 to 10+energy;
cbarra(x,y,azul);
end
until(close_things==1);
end

process draw_hp(x,y);
private
int hpold;
begin
repeat
if(hpold!=hp);
hpold=hp;
kill_energy=1;
end
frame;
from x=210 to 210+hp;
cbarra(x,y,rojo);
end
until(close_things==1);
end

process cbarra(x,y,graph);
begin
z=-253;
repeat
frame;
until(kill_energy==1);
frame;
end

process denergy();
begin
repeat
frame;
if(energyreal>energy);
if(energyreal-1>energy);
energy+=2;
else
hp++;
end
end
if(energyreal<energy);
if(energyreal+1<energy);
energy-=2;
else
energy--;
end
end
if(hpreal>hp);
if(hpreal-1>hp);
hp+=2;
else
hp++;
end
end
if(hpreal<hp);
if(hpreal+1<hp);
hp-=2;
else
hp--;
end
end
until(close_things==1)
end

process drain_energy(int cantidad);
begin
energyreal=energyreal-cantidad;
end

process drain_hp(int cantidad);
begin
hpreal=hpreal-cantidad;
end

process simbolo(x,y,graph,size);
begin
z=-255;
repeat
frame;
until(close_things==1||mataflag==1);
end

process ssimbolo(x,y,graph,size);
begin
z=-256;
frame;
end

process sespecial(x,y);
begin
size=40;
z=-254;
repeat
if(tespecial==0);
graph=gc;
end
if(tespecial==1)
graph=gt;
end
frame;
until(close_things==1);
end

process malo(x,y,int tipo,int vida,int valor);
private
int premio;
int choque;
int anim;
begin
if(tipo==-1);
quedan--;
signal(id,s_kill);
end
size=50;
if(tipo==0);
graph=bicho11;
end
if(tipo==1);
graph=bicho21;
end
if(tipo==2);
graph=bicho31;
end
z=-99;
repeat
if(ybajar>0);
timerbajar++;
y++;
end
frame;

if(anim==0);
            if(tipo==0);
                        graph=bicho11;
            end
            if(tipo==1);
                        graph=bicho21;
                        end
            if(tipo==2);
                        graph=bicho31;
            end
end

if(anim==3);
            if(tipo==0);
                        graph=bicho12;
            end
            if(tipo==1);
                        graph=bicho22;
            end
            if(tipo==2);
                        graph=bicho32;
            end
end
if(anim==5);
            if(tipo==0);
                        graph=bicho13;
            end
            if(tipo==1);
                        graph=bicho23;
            end
            if(tipo==2);
                        graph=bicho33;
            end
end

if(anim==7);
            if(tipo==0);
                        graph=bicho14;
            end
            if(tipo==1);
                        graph=bicho24;
            end
            if(tipo==2);
                        graph=bicho34;
            end
end

if(anim==9);
            if(tipo==0);
                        graph=bicho12;
            end
            if(tipo==1);
                        graph=bicho25;
            end
            if(tipo==2);
                        graph=bicho35;
            end
end

anim++;
if(anim>10);
anim=0;
end
if(mataflag==1);
signal(id,s_kill);
end
if(moverse==1);
if(rand(0,1000)<=(nivel/2)+1);
disparomalo(x,y+10,disparoen);
end
if(tipo==2);
if(rand(0,2000)<=(nivel/2)+1);
disparobuscador(x,y,gplasmapq);
end
end
x+=xmoverse;
if(x=>300 && dire==1);
dire=0;
end
if(x<20 && dire==0);
ybajar=1;
dire=1;
end
end
if(collision(type bicho));
drain_hp(20);
quedan--;
explosion(x,y,rand(40,60));
signal(id,s_kill);
end
if((choque=collision(type disparo))||(collision(type dtocho))||(collision(type dtornao))|| restart_level==1)
vida--;
explosion(x,y,rand(40,60));
if(choque);
signal(choque,s_kill);
end
if(vida<=0);
break;
end
end
until(close_things==1);
if(hpreal>0);
score+=valor;
ascore(x,y,valor);
drain_energy(-(2*tipo));
quedan--;
premio=rand(0,420);
if(premio==0);
bonus(x,y,vextra);
end
if(premio==1);
bonus(x,y,zeta);
end
if((premio>1 && premio<10)||premio>60 && premio<62);
bonus(x,y,energia);
end
if(premio>10 && premio<12);
bonus(x,y,s);
end
if(premio>50 && premio<53);
bonus(x,y,r);
end
if(premio>20 && premio<25);
bonus(x,y,i);
end
if(premio>30 && premio<37);
bonus(x,y,c);
end
if(premio>40 && premio<47);
bonus(x,y,t);
end
if(premio>100 && premio<150);
bonus(x,y,cash);
end
end
end


process explosion(x,y,size);
private
int anim;
begin
z=-256;
if((x<330)&&(x>-10)&&(y<210)&&(y>-10));
play_wav(sexplo1,0);
from anim=0 to 9;
if(anim==0);
graph=explos0;
end
if(anim==1);
graph=explos1;
end
if(anim==2);
graph=explos2;
end
if(anim==3);
graph=explos3;
end
if(anim==4);
graph=explos4;
end
if(anim==5);
graph=explos5;
end
if(anim==6);
graph=explos6;
end
if(anim==7);
graph=explos7;
end
if(anim==8);
graph=explos8;
end
if(anim==9);
graph=explos9;
end
frame;
end
end
end

process bonus(x,y,int tipo);
begin

if(tipo==vextra);
graph=gvextra;
repeat
frame;
y+=5;
if(collision(type bicho));
vidas++;
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==zeta);
graph=gz;
repeat
frame;
y+=5;
if(collision(type bicho));
lluviameteoritos(25);
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==t);
graph=gt;
repeat
frame;
y+=5;
if(collision(type bicho));
tespecial=1;
drain_energy(-5);
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==c);
graph=gc;
repeat
frame;
y+=5;
if(collision(type bicho));
tespecial=0;
drain_energy(-5);
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==i);
graph=gi;
repeat
frame;
y+=5;
if(collision(type bicho));
invencitime+=100;
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==energia);
graph=genergia;
repeat
frame;
y+=5;
if(collision(type bicho));
drain_hp(-50);
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==s);
graph=gs;
repeat
frame;
y+=5;
if(collision(type bicho));
energyreal=100;

from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
end
frame;
end
signal(id,s_kill);
end
until(y>210);
frame;
end

if(tipo==r);
graph=gr;
repeat
frame;
y+=5;
if(collision(type bicho));
reversetimer+=500;

from size=100 to 0 step 5;
frame;
angle+=20000;
if(angle>360000);
angle-=360000;
end
end
signal(id,s_kill);
end
until(y>210 || restart_level==1);
frame;
end

if(tipo==cash);
graph=gdollar;
repeat
frame;
y+=5;
if(collision(type bicho));
score+=50;
ascore(x,y,50);
from size=100 to 0 step 5;
angle+=20000;
if(angle>360000);
angle-=360000;
frame;
end
frame;
end
signal(id,s_kill);
end
until(y>210 || restart_level==1);
frame;
end
end

process disparomalo(x,y,graph);
private
int choque;
begin
z=-98;
repeat
frame;
y+=15;
if(collision(type bicho));
drain_hp(10);
explosion(x,y,rand(90,120));
signal(id,s_kill);
end
until(((choque=collision(type disparo))||(collision(type dtocho))||(collision(type dtornao)))||restart_level==1||x>330||x<-10||y>210||y<-10||mataflag==1||parajefazo==1)
explosion(x,y,rand(90,120));
if(choque);
signal(choque,s_kill);
end
end

process ascore(x,y,int numero);
private
int identif;
int timerrr;
begin
repeat
timerrr++;
y-=2;
identif=write(0,x,y,4,itoa(numero));
frame;
delete_text(identif);
until(timerrr>20);
frame;
end

process animacionbicho(x,y);
begin
size=65;
graph=81;
frame(400);
graph=82;
frame(400);
graph=83;
frame(400);
graph=84;
frame(400);
graph=85;
frame(400);
graph=86;
frame(400);
graph=87;
frame(400);
graph=88;
frame(400);
idprota=bicho(x,y);
moverse=1;
end


process lluviameteoritos(int cuantos);
begin
from x=0 to cuantos;
frame(500);
meteorito(rand(0,320),-20,rand(1,3),rand(2,4),rand(90,120));
end
end

process meteorito(x,y,imagen,vida,size);
private
int choque;
int angulo;
int velocidadgiro;
begin
velocidadgiro=rand(1000,25000);
if(imagen==1);
graph=meteo1;
end
if(imagen==2);
graph=meteo2;
end
if(imagen==3);
graph=meteo3;
end
angulo=get_angle(idprota);
repeat
frame;
estela(4);
angle+=velocidadgiro;
if(angle>360000);
angle-=360000;
end
xadvance(angulo,7);
if(collision(type bicho));
hpreal-=25;
break;
end
if((choque=collision(type disparo))||(collision(type dtocho))||(collision(type dtornao)))
vida--;
if(vida<=0);
break;
end
/*if(hpreal<=0);
break;
end*/
if(choque);
explosion(choque.x,choque.y,rand(90,120));
signal(choque,s_kill);
else
explosion(x,y,rand(90,120));
end
end
until(close_things==1);
explosion(x,y,rand(90,120));
end

process estela(int nframes);
begin
flags=4;
graph=father.graph;
x=father.x;
y=father.y;
z=father.z+1;
angle=father.angle;
size=father.size;
frame(nframes*100);
end

process escudo(x,y);
begin
flags=4;
z=father.z-1;
size=150;
graph=gescudo;
frame;
end

process level(int cantidad,int modo);
private
int idant=0;
begin
if(modo!=2);
vnuco(160,100,"LEVEL " + itoa(nivel),50);
frame(5000);
vnuco(160,100,"READY...",50);
frame(5000);
vnuco(160,100,"GO!",24);
frame(2400);
end
if(modo==0);
if(cantidad==1);
quedan=30;
from x=1 to 10;

idant=malo((29*x),(10+(25)),(nivel1[(x)-1]),(nivel1[(x)-1]+1),((nivel1[(x)-1]+1)*20-(nivel1[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel1[(x+10)-1]),(nivel1[(x+10)-1]+1),((nivel1[(x+10)-1]+1)*20-(nivel1[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel1[(x+20)-1]),(nivel1[(x+20)-1]),((nivel1[(x+20)-1]+1)*20-(nivel1[x+19]*5)));
end
end
if(cantidad==2);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel2[(x)-1]),(nivel2[(x)-1]+1),((nivel2[(x)-1]+1)*20-(nivel2[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel2[(x+10)-1]),(nivel2[(x+10)-1]+1),((nivel2[(x+10)-1]+1)*20-(nivel2[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel2[(x+20)-1]),(nivel2[(x+20)-1]),((nivel2[(x+20)-1]+1)*20-(nivel2[x+19]*5)));
end
end
if(cantidad==3);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel3[(x)-1]),(nivel3[(x)-1]+1),((nivel3[(x)-1]+1)*20-(nivel3[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel3[(x+10)-1]),(nivel3[(x+10)-1]+1),((nivel3[(x+10)-1]+1)*20-(nivel3[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel3[(x+20)-1]),(nivel3[(x+20)-1]),((nivel3[(x+20)-1]+1)*20-(nivel3[x+19]*5)));
end
end
if(cantidad==4);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel4[(x)-1]),(nivel4[(x)-1]+1),((nivel4[(x)-1]+1)*20-(nivel4[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel4[(x+10)-1]),(nivel4[(x+10)-1]+1),((nivel4[(x+10)-1]+1)*20-(nivel4[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel4[(x+20)-1]),(nivel4[(x+20)-1]),((nivel4[(x+20)-1]+1)*20-(nivel4[x+19]*5)));
end
end
if(cantidad==5);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel5[(x)-1]),(nivel5[(x)-1]+1),((nivel5[(x)-1]+1)*20-(nivel5[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel5[(x+10)-1]),(nivel5[(x+10)-1]+1),((nivel5[(x+10)-1]+1)*20-(nivel5[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel5[(x+20)-1]),(nivel5[(x+20)-1]),((nivel5[(x+20)-1]+1)*20-(nivel5[x+19]*5)));
end
end
if(cantidad==6);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel6[(x)-1]),(nivel6[(x)-1]+1),((nivel6[(x)-1]+1)*20-(nivel6[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel6[(x+10)-1]),(nivel6[(x+10)-1]+1),((nivel6[(x+10)-1]+1)*20-(nivel6[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel6[(x+20)-1]),(nivel6[(x+20)-1]),((nivel6[(x+20)-1]+1)*20-(nivel6[x+19]*5)));
end
end
if(cantidad==7);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel7[(x)-1]),(nivel7[(x)-1]+1),((nivel7[(x)-1]+1)*20-(nivel7[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel7[(x+10)-1]),(nivel7[(x+10)-1]+1),((nivel7[(x+10)-1]+1)*20-(nivel7[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel7[(x+20)-1]),(nivel7[(x+20)-1]),((nivel7[(x+20)-1]+1)*20-(nivel7[x+19]*5)));
end
end
if(cantidad==8);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel8[(x)-1]),(nivel8[(x)-1]+1),((nivel8[(x)-1]+1)*20-(nivel8[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel8[(x+10)-1]),(nivel8[(x+10)-1]+1),((nivel8[(x+10)-1]+1)*20-(nivel8[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel8[(x+20)-1]),(nivel8[(x+20)-1]),((nivel8[(x+20)-1]+1)*20-(nivel8[x+19]*5)));
end
end
if(cantidad==9);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel9[(x)-1]),(nivel9[(x)-1]+1),((nivel9[(x)-1]+1)*20-(nivel9[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel9[(x+10)-1]),(nivel9[(x+10)-1]+1),((nivel9[(x+10)-1]+1)*20-(nivel9[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel9[(x+20)-1]),(nivel9[(x+20)-1]),((nivel9[(x+20)-1]+1)*20-(nivel9[x+19]*5)));
end
end
if(cantidad==10);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel10[(x)-1]),(nivel10[(x)-1]+1),((nivel10[(x)-1]+1)*20-(nivel10[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel10[(x+10)-1]),(nivel10[(x+10)-1]+1),((nivel10[(x+10)-1]+1)*20-(nivel10[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel10[(x+20)-1]),(nivel10[(x+20)-1]),((nivel10[(x+20)-1]+1)*20-(nivel10[x+19]*5)));
end
end
if(cantidad==11);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel11[(x)-1]),(nivel11[(x)-1]+1),((nivel11[(x)-1]+1)*20-(nivel11[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel11[(x+10)-1]),(nivel11[(x+10)-1]+1),((nivel11[(x+10)-1]+1)*20-(nivel11[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel11[(x+20)-1]),(nivel11[(x+20)-1]),((nivel11[(x+20)-1]+1)*20-(nivel11[x+19]*5)));
end
end
if(cantidad==12);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel12[(x)-1]),(nivel12[(x)-1]+1),((nivel12[(x)-1]+1)*20-(nivel12[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel12[(x+10)-1]),(nivel12[(x+10)-1]+1),((nivel12[(x+10)-1]+1)*20-(nivel12[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel12[(x+20)-1]),(nivel12[(x+20)-1]),((nivel12[(x+20)-1]+1)*20-(nivel12[x+19]*5)));
end
end
if(cantidad==13);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel13[(x)-1]),(nivel13[(x)-1]+1),((nivel13[(x)-1]+1)*20-(nivel13[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel13[(x+10)-1]),(nivel13[(x+10)-1]+1),((nivel13[(x+10)-1]+1)*20-(nivel13[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel13[(x+20)-1]),(nivel13[(x+20)-1]),((nivel13[(x+20)-1]+1)*20-(nivel13[x+19]*5)));
end
end
if(cantidad==14);
quedan=30;
from x=1 to 10;
idant=malo((29*x),(10+(25)),(nivel14[(x)-1]),(nivel14[(x)-1]+1),((nivel14[(x)-1]+1)*20-(nivel14[x-1]*5)));
idant=malo((29*x),(10+(50)),(nivel14[(x+10)-1]),(nivel14[(x+10)-1]+1),((nivel14[(x+10)-1]+1)*20-(nivel14[x+9]*5)));
idant=malo((29*x),(10+(75)),(nivel14[(x+20)-1]),(nivel14[(x+20)-1]),((nivel14[(x+20)-1]+1)*20-(nivel14[x+19]*5)));
end
end
if(cantidad==15);
toyjefe=1;
quedan=1;
smarcian=1;
jefazo(160,60,120);
end
else
if(modo==1);
quedan=30;
from x=1 to 10;
from y=1 to 3;
z=rand(0,2);
idant=malo((29*x),(10+(25*y)),z,(z+1),(z+1)*20-(z*5));
end
end
else
if(modo==2);
quedan=1;
if(cantidad==1);
moverse=0;
vnuco2(160,100,"Bienvenido al tutorial de FrikiMars",50);
frame(5000);
vnuco2(160,100,"Aqui aprenveas como manejar la nve y",40);
frame(4000);
vnuco2(160,100,"otros controles basicos.",40);
frame(4000);
vnuco2(160,100,"Bien, comencemos con el manejo de la nve.",40);
frame(4000);
vnuco2(160,100,"Hay controles para una mano y para dos:",40);
frame(4000);
vnuco2(160,100,"Los de una mano son QWEASD,y los de dos",40);
frame(4000);
vnuco2(160,100,"los cursores y UHJK.",40);
frame(4000);
vnuco2(160,100,"Puedes usar estos controles a la vez.",40);
frame(4000);
vnuco2(160,100,"Ahora prueba a moverte con AD o cursores,",40);
frame(4000);
vnuco2(160,100,"disparar con S o J,y destruir al bicho.",40);
frame(4000);
moverse=1;
malo(160,60,0,1,100);
end
if(cantidad==2);
moverse=0;
vnuco2(160,100,"Bien hecho!",50);
frame(5000);
vnuco2(160,100,"¿Ves la barra vacia de arriba?",40);
frame(4000);
vnuco2(160,100,"Es la energia.",40);
frame(4000);
energy=100;
energyreal=100;
vnuco2(160,100,"Ya la tienes rellena.",40);
frame(4000);
vnuco2(160,100,"Hay dos cosas que gastan energia,",40);
frame(4000);
vnuco2(160,100,"utilizar disparos y movimiento especiales.",40);
frame(4000);
vnuco2(160,100,"Lo primero se hace con la W o la U,",40);
frame(4000);
vnuco2(160,100,"y lo segundo con QE o HK.",40);
frame(4000);
vnuco2(160,100,"Ahora te dejare moverte, pruebalo,",40);
frame(4000);
vnuco2(160,100,"y cuando estes listo, mata al bicho..",40);
frame(4000);
moverse=1;
malo(160,60,0,1,100);
end
if(cantidad==3);
moverse=0;
vnuco2(160,100,"Vale,",50);
frame(5000);
vnuco2(160,100,"como ya habras supuesto,la barra roja",40);
frame(4000);
vnuco2(160,100,"de la derecha es tu vida.",40);
frame(4000);
vnuco2(160,100,"Bajara cuando te disparen o choques.",40);
frame(4000);
vnuco2(160,100,"Si se termina, mueres,",40);
frame(4000);
vnuco2(160,100,"El primer simbolo empezando por la",40);
frame(4000);
vnuco2(160,100,"izquierda,representa las vidas que tienes.",40);
frame(4000);
vnuco2(160,100,"El segundo, el tipo de disparo que tienes.",40);
frame(4000);
vnuco2(160,100,"Hay dos tipos de disparo especial, cada",40);
frame(4000);
vnuco2(160,100,"uno con sus ventajas e inconvenientes.",40);
frame(4000);
vnuco2(160,100,"Antes ya has podido probar uno de ellos,",40);
frame(4000);
tespecial=1;
vnuco2(160,100,"asi que ahora tienes el otro.",40);
frame(4000);
vnuco2(160,100,"Pruebalo, y cuando hayas terminado,",40);
frame(4000);
vnuco2(160,100,"mata al bicho.",40);
frame(4000);
moverse=1;
malo(160,60,0,1,100);
end
if(cantidad==4);
quedan=3;
moverse=0;
vnuco2(160,100,"Bien, ya controlas los especiales.",50);
frame(5000);
vnuco2(160,100,"A la derecha de ellos,estan los puntos,",40);
frame(4000);
vnuco2(160,100,"que realmente sirven para poco mas bien,",40);
frame(4000);
vnuco2(160,100,"asi que hablemos de cosas mas utiles.",40);
frame(4000);
vnuco2(160,100,"Hay 3 tipos de enemigos, y uno final.",40);
frame(4000);
vnuco2(160,100,"Cuando te deje moverte, podras ver los 3.",40);
frame(4000);
vnuco2(160,100,"Desgraciadamente, para ver el final",40);
frame(4000);
vnuco2(160,100,"no te quedara mas remedio que llegar al",40);
frame(4000);
vnuco2(160,100,"nivel 15 en modo story...",40);
frame(4000);
vnuco2(160,100,"Cuando hayas terminado con los bichos,",40);
frame(4000);
vnuco2(160,100,"seguiremos.",40);
frame(4000);
moverse=1;
malo(160,60,0,1,100);
malo(140,60,1,2,150);
malo(180,60,2,3,200);
end
if(cantidad==5);
moverse=0;
vnuco2(160,100,"Bien, ya estas hecho todo un experto.",50);
frame(5000);
vnuco2(160,100,"Lo unico que me falta por explicar son",40);
frame(4000);
vnuco2(160,100,"los modos de juego...",40);
frame(4000);
vnuco2(160,100,"Train es este que estas viendo ahora mismo,",40);
frame(4000);
vnuco2(160,100,"Endless tiene fases ilimitadas que cambian,",40);
frame(4000);
vnuco2(160,100,"y Story tiene 15 niveles realizados a mano.",40);
frame(4000);
vnuco2(160,100,"Ahora dejare suelto a un enemigo.",40);
frame(4000);
vnuco2(160,100,"con mucha resistencia.",40);
frame(4000);
vnuco2(160,100,"para que practiques todo lo que quieras.",40);
frame(4000);
vnuco2(160,100,"El tutorial terminara cuando lo mates,",40);
frame(4000);
vnuco2(160,100,"o cuando pulses escape.",40);
moverse=1;
malo(160,60,2,200,100);
end
end
end
end
repeat
if(nactual!=id);
signal(nactual,s_kill);
nactual=id;
end
frame;
if(ybajar>0 && timerbajar>=quedan)
ybajar--;
end
if(dire==0);
xmoverse=-2;
end
if(dire==1);
xmoverse=2;
end
until(quedan==0);
restart_level=1;
if((nivel!=15 || modo!=0)&&(nivel!=5 || modo!=2));
vnuco(160,100,"LEVEL CLEARED!",50);
frame(5000);
nivel+=1;
restart_level=0;
level(nivel,modo);
else
vnuco(160,100,"GAME COMPLETED!",50);
frame(5000);
unloadmod=1;
smarcian=0;
frame;
close_things=1;
signal(idprota,s_kill);
delete_text(all_text);
frame;
frame;
close_things=0;
if(modo==0);
creditos();
else
menu();
end
end

end

process vnuco(x,y,string cadena,int nframes);
private
int idntxt;
begin
z=-200;
graph=vgraf;
idntxt=write(0,x,y,4,cadena);
frame(nframes*100);
delete_text(idntxt);
end

process vnuco2(x,y,string cadena,int nframes);
private
int idntxt;
begin
z=-200;
graph=v2;
idntxt=write(0,x,y,4,cadena);
frame(nframes*100);
delete_text(idntxt);
end

process jefazo(x,y,size);
private
int vida=1000;
int valor=10000;
int premio;
int direc;
int choque;
int anim;
int timerflags;
begin
graph=bicho11;
z=-99;
repeat
frame;
if(timerflags>0);
timerflags--;
end
if(timerflags==0);
flags=0;
end
if(anim==0);
graph=bicho11;
end

if(anim==3);
graph=bicho12;
end

if(anim==5);
graph=bicho13;
end

if(anim==7);
graph=bicho14;
end

if(anim==9);
graph=bicho12;
end

anim++;
if(mataflag==1);
signal(id,s_kill);
end
if(anim>10);
anim=0;
end
if(moverse==1);
if(rand(0,200)<=nivel);
disparomalo(x+rand(-25,+25),y+5,disparoen);
end
if(rand(0,600)<=nivel);
disparobuscador(x,y,gplasmapq);
end
if(rand(0,4000)<=nivel);
dplasma(x,y+10,gplasma1);
end
if(rand(0,2500)<=nivel && mahora==0);
mirilla(x,y);
end
if(rand(0,8500)<=nivel);
lluviameteoritos(5);
end
if(dire==1);
x+=4;
end
if(dire==0);
x-=4;
end
if(x=>270 && dire==1);
dire=0;
end
if(x<50 && dire==0);
dire=1;
end
end
if(collision(type bicho));
drain_hp(20);
quedan--;
explosion(x,y,rand(40,60));
signal(id,s_kill);
end
if((choque=collision(type disparo))||(collision(type dtocho))||(collision(type dtornao))|| restart_level==1)
flags=4;
timerflags=5;
vida--;
if(choque);
premio=rand(0,4200);
if(premio==0);
bonus(x,y,vextra);
end
if(premio==1);
bonus(x,y,zeta);
end
if((premio>1 && premio<10)||premio>60 && premio<62);
bonus(x,y,energia);
end

if(premio>10 && premio<12);
bonus(x,y,s);
end
if(premio>50 && premio<53);
bonus(x,y,r);
end
if(premio>20 && premio<25);
bonus(x,y,i);
end
if(premio>30 && premio<37);
bonus(x,y,c);
end
if(premio>40 && premio<47);
bonus(x,y,t);
end
if(premio>100 && premio<150);
bonus(x,y,cash);
end
vida-=9;
explosion(choque.x,choque.y,rand(40,60));
signal(choque,s_kill);
end
if(vida<=0);
break;
end
end
until(close_things==1);
if(hpreal>0);
parajefazo=1;
moverse=0;
from premio=0 to 120;
parpadeo(1);
if((premio % 10)==0);
explosion(x+rand(30,-30),y+rand(30,-30),rand(100,150));
end
frame;
end
pantallablanca(26);
frame;
score+=valor;
ascore(x,y,valor);
frame(2400);
quedan--;
end
end

process pantallablanca(int nframes);
begin
x=160; y=100; z=-300;
graph=blanco;
frame(nframes*100);
end

process disparobuscador(x,y,graph);
private
int choque;
int angulop;
begin
z=-98;
angulop=get_angle(idprota);
repeat
frame;
xadvance(angulop,6);
if(collision(type bicho));
drain_hp(12);
explosion(x,y,rand(40,50));
signal(id,s_kill);
end
until(((choque=collision(type disparo))||(collision(type dtocho))||(collision(type dtornao)))||restart_level==1||x>330||x<-10||y>210||y<-10||mataflag==1||parajefazo==1)
explosion(x,y,rand(40,50));
if(choque);
signal(choque,s_kill);
end
end

process dplasma(x,y,graph);
private
int choque;
int anim;
begin
z=-98;
repeat
frame;
anim++;
y+=8;
if(anim==3);
graph=gplasma2;
end
if(anim==6);
graph=gplasma3;
end
if(collision(type bicho));
drain_hp(3);
explosion(x,y,rand(10,30));
end
if(((choque=collision(type disparo))||(collision(type dtocho))||(collision(type dtornao))))
explosion(x,y,rand(90,120));
if(choque);
signal(choque,s_kill);
end
end
until(restart_level==1||x>330||x<-10||y>210||y<-10||mataflag==1||parajefazo==1);
end

int mirilla(x,y);
private
int aangle;
int idcoli=0;
begin
mahora=1;
graph=gmirilla;
z=father.z+1;
repeat
frame;
xadvance(aangle,5);
aangle=near_angle(aangle,get_angle(idprota),20000);
if(parajefazo==1||mataflag==1);
break;
end
until(idcoli=collision(type bicho));
flags=4;
frame;
frame;
if(idcoli);
rayo(x);
end
frame;
mahora=0;
end

process rayo(x);
private
int vtimer;
begin
y=100;
z=-299;
rayoahora=1;
graph=grayo;
frame;
from vtimer=0 to 84;
frame;
if(parajefazo==1||mataflag==1);
break;
end
if(collision(type bicho));
drain_hp(3);
explosion(idprota.x,idprota.y,rand(20,30));
end
if(rand(0,2)==0);
flags=4;
else
flags=0;
end
end
end

process escribir(x,y,string texto,int nframes);
private
string strprv;
int cont=0;
int idtexto;
begin
write(0,30,75,0,"Gracias a...");
repeat
      strprv+=texto[cont];
      cont++;
      idtexto=write(0,x,y,0,strprv);
      frame;
      delete_text(idtexto);
      if(cierratexto==1);
      break;
      end
until(texto[cont]=="%"||key(_esc));
if(nframes>0);
idtexto=write(0,x,y,0,strprv);
frame((240-cont)*100);
delete_text(all_text);
write(0,30,50,0,"PROGRAMACION: Tropsy");
write(0,30,60,0,"GRAFICOS: Donan");
write(0,30,75,0,"Gracias a...");
else
repeat
      if(cierratexto==1);
      break;
      end
      delete_text(idtexto);
      frame;
      //write(0,x,y,0,strprv);
until(close_things==1||key(_esc));
delete_text(idtexto);
end
end