task SlowEffect(r,g,b){
let leff     = Obj_Create(OBJ_EFFECT);
let effb     = Obj_Create(OBJ_EFFECT);
let eff      = Obj_Create(OBJ_EFFECT);
let alpha    = 0;
let slowf    = false;
let cc       = 0;
let move1    = 90;
let moveA    = 0;
let sca      = 0;
let sca1     = 0;

ObjEffect_SetTexture(leff,img3);
ObjEffect_SetRenderState(leff,ALPHA);
ObjEffect_SetPrimitiveType(leff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(leff,4);
ObjEffect_CreateVertex(leff,4);
ObjEffect_SetVertexXY(leff,0,8/-2,8/-2);
ObjEffect_SetVertexXY(leff,1,8/-2,8/2);
ObjEffect_SetVertexXY(leff,2,8/2,8/-2);
ObjEffect_SetVertexXY(leff,3,8/2,8/2);
ObjEffect_SetVertexUV(leff,0,220,49);
ObjEffect_SetVertexUV(leff,1,220,57);
ObjEffect_SetVertexUV(leff,2,228,49);
ObjEffect_SetVertexUV(leff,3,228,57);

ObjEffect_SetTexture(effb,img3);
ObjEffect_SetRenderState(effb,ALPHA);
ObjEffect_SetPrimitiveType(effb,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(effb,3);
ObjEffect_CreateVertex(effb,4);
ObjEffect_SetVertexXY(effb,0,64/-2,64/-2);
ObjEffect_SetVertexXY(effb,1,64/-2,64/2);
ObjEffect_SetVertexXY(effb,2,64/2,64/-2);
ObjEffect_SetVertexXY(effb,3,64/2,64/2);
ObjEffect_SetVertexUV(effb,0,193,65);
ObjEffect_SetVertexUV(effb,1,193,128);
ObjEffect_SetVertexUV(effb,2,256,65);
ObjEffect_SetVertexUV(effb,3,256,128);

ObjEffect_SetTexture(eff,img3);
ObjEffect_SetRenderState(eff,ALPHA);
ObjEffect_SetPrimitiveType(eff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(eff,3);
ObjEffect_CreateVertex(eff,4);
ObjEffect_SetVertexXY(eff,0,64/-2,64/-2);
ObjEffect_SetVertexXY(eff,1,64/-2,64/2);
ObjEffect_SetVertexXY(eff,2,64/2,64/-2);
ObjEffect_SetVertexXY(eff,3,64/2,64/2);
ObjEffect_SetVertexUV(eff,0,193,65);
ObjEffect_SetVertexUV(eff,1,193,128);
ObjEffect_SetVertexUV(eff,2,256,65);
ObjEffect_SetVertexUV(eff,3,256,128);

loop{
Obj_SetPosition(leff,GetPlayerX,GetPlayerY);
Obj_SetPosition(effb,GetPlayerX,GetPlayerY);
Obj_SetPosition(eff,GetPlayerX,GetPlayerY);
if(GetKeyState(VK_SLOWMOVE)==KEY_HOLD){slowf=true}
if(GetKeyState(VK_SLOWMOVE)==KEY_PULL){slowf=false}
if(alpha<150&&slowf==true){alpha+=150/10}
if(alpha>0&&slowf==false){alpha-=150/3}
ObjEffect_SetVertexColor(leff,0,alpha*1.5,255,100,100);
ObjEffect_SetVertexColor(leff,1,alpha*1.5,255,100,100);
ObjEffect_SetVertexColor(leff,2,alpha*1.5,255,100,100);
ObjEffect_SetVertexColor(leff,3,alpha*1.5,255,100,100);
ObjEffect_SetVertexColor(effb,0,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(effb,1,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(effb,2,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(effb,3,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(eff,0,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(eff,1,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(eff,2,alpha*1.5,r,g,b);
ObjEffect_SetVertexColor(eff,3,alpha*1.5,r,g,b);

if(slowf==true){
ObjEffect_SetAngle(leff,0,0,cc);
ObjEffect_SetAngle(effb,0,0,20+move1+cc);
ObjEffect_SetAngle(eff,0,0,20-cc);
ObjEffect_SetScale(eff,2-sca,2-sca);
}
if(slowf==true){
if(move1<270){moveA+=5}
move1=270.0*sin(moveA);
if(move1>=270){cc++}
if(sca<1){sca1+=5}
sca=1.0*sin(sca1);
}

if(slowf==false){
ObjEffect_SetAngle(effb,0,0,20);
ObjEffect_SetAngle(eff,0,0,20);
ObjEffect_SetScale(eff,sca,sca);
move1=90;moveA=0;cc=0;sca=0;sca1=0;}

if(OnMissed==true){alpha=0}

yield;
}
}

task BitEffect{
	let eff      = Obj_Create(OBJ_EFFECT);
	let eff2     = Obj_Create(OBJ_EFFECT);
	let eff3     = Obj_Create(OBJ_EFFECT);
	let eff4     = Obj_Create(OBJ_EFFECT);
	let alpha    = 255;
	let slowf    = false;
	let cc       = 0;
	let move1    = 0;
	let moveA    = 0;
	let move2    = 0;
	let moveB    = 0;
	let sca      = 0;
	let i        = 0;
	let dis      = 0;
	
	loop(4){
		ObjEffect_SetTexture(eff+i,img4);
		ObjEffect_SetRenderState(eff+i,ALPHA);
		ObjEffect_SetPrimitiveType(eff+i,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetLayer(eff+i,3);
		ObjEffect_CreateVertex(eff+i,4);
		ObjEffect_SetVertexXY(eff+i,0,30/-2,30/-2);
		ObjEffect_SetVertexXY(eff+i,1,30/-2,30/2);
		ObjEffect_SetVertexXY(eff+i,2,30/2,30/-2);
		ObjEffect_SetVertexXY(eff+i,3,30/2,30/2);
		ObjEffect_SetVertexUV(eff+i,0,1,1);
		ObjEffect_SetVertexUV(eff+i,1,1,31);
		ObjEffect_SetVertexUV(eff+i,2,31,1);
		ObjEffect_SetVertexUV(eff+i,3,31,31);
		i++;
	}
	
	loop{
		if(OnBomb==true){dis=3;sc++;}
		if(OnBomb==false){dis=0}
		ObjEffect_SetAngle(eff,0,0,sca/3);
		ObjEffect_SetAngle(eff2,0,0,-sca/3);
		ObjEffect_SetAngle(eff3,0,0,sca/3);
		ObjEffect_SetAngle(eff4,0,0,-sca/3);
		
		sca+=10;
		if(move1<20&&GetKeyState(VK_SLOWMOVE)==KEY_HOLD){moveA+=10}
		if(move1>0&&GetKeyState(VK_SLOWMOVE)==KEY_FREE){moveA-=10}
		move1=20.0*sin(moveA);
		if(move2<50&&GetKeyState(VK_SLOWMOVE)==KEY_HOLD){moveB+=10}
		if(move2>0&&GetKeyState(VK_SLOWMOVE)==KEY_FREE){moveB-=10}
		move2=50.0*sin(moveB);
		Obj_SetPosition(eff,(GetPlayerX+dis*sin(sca*10))+20+move1/3,(GetPlayerY+dis*sin(sca*10))+20-move2/2);
		Obj_SetPosition(eff2,(GetPlayerX+dis*sin(sca*10))-20-move1/3,(GetPlayerY+dis*sin(sca*10))+20-move2/2);
		Obj_SetPosition(eff3,(GetPlayerX+dis*sin(sca*10))+30-move1*1,(GetPlayerY+dis*sin(sca*10))-25-move2/5);
		Obj_SetPosition(eff4,(GetPlayerX+dis*sin(sca*10))-30+move1*1,(GetPlayerY+dis*sin(sca*10))-25-move2/5);
		ObjEffect_SetScale(eff,0.5+0.05*sin(sca),0.5+0.05*sin(sca));
		ObjEffect_SetScale(eff2,0.5+0.05*sin(sca),0.5+0.05*sin(sca));
		ObjEffect_SetScale(eff3,0.5+0.05*sin(sca),0.5+0.05*sin(sca));
		ObjEffect_SetScale(eff4,0.5+0.05*sin(sca),0.5+0.05*sin(sca));
		
		ObjEffect_SetVertexColor(eff,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff,3,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff2,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff2,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff2,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff2,3,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff3,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff3,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff3,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff3,3,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff4,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff4,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff4,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff4,3,alpha,255,255,255);
		
		if(OnMissed==true){alpha=0}
		if(OnMissed==false){alpha=255}
		
		yield;
	}
}

task BitEffect_SUBT{
	let eff		= Obj_Create(OBJ_EFFECT);
	let eff2		= Obj_Create(OBJ_EFFECT);
	let eff3		= Obj_Create(OBJ_EFFECT);
	let eff4		= Obj_Create(OBJ_EFFECT);
	let alpha		= 255;
	let slowf		= false;
	let cc			= 0;
	let move1		= 0;
	let moveA		= 0;
	let move2		= 0;
	let moveB		= 0;
	let sca			= 0;
	let i			= 0;
	let dis			= 0;
	
	loop(4){
		ObjEffect_SetTexture(eff+i,img4);
		ObjEffect_SetRenderState(eff+i,SUBTRACT);
		ObjEffect_SetPrimitiveType(eff+i,PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetLayer(eff+i,3);
		ObjEffect_CreateVertex(eff+i,4);
		ObjEffect_SetVertexXY(eff+i,0,30/-2,30/-2);
		ObjEffect_SetVertexXY(eff+i,1,30/-2,30/2);
		ObjEffect_SetVertexXY(eff+i,2,30/2,30/-2);
		ObjEffect_SetVertexXY(eff+i,3,30/2,30/2);
		ObjEffect_SetVertexUV(eff+i,0,1,1);
		ObjEffect_SetVertexUV(eff+i,1,1,31);
		ObjEffect_SetVertexUV(eff+i,2,31,1);
		ObjEffect_SetVertexUV(eff+i,3,31,31);
		i++;
	}
	
	loop{
		if(OnBomb==true){dis=3;sc++;}
		if(OnBomb==false){dis=0}
		ObjEffect_SetAngle(eff,0,0,-sca/3);
		ObjEffect_SetAngle(eff2,0,0,sca/3);
		ObjEffect_SetAngle(eff3,0,0,-sca/3);
		ObjEffect_SetAngle(eff4,0,0,sca/3);
		
		sca+=10;
		if(move1<20&&GetKeyState(VK_SLOWMOVE)==KEY_HOLD){moveA+=10}
		if(move1>0&&GetKeyState(VK_SLOWMOVE)==KEY_FREE){moveA-=10}
		move1=20.0*sin(moveA);
		if(move2<50&&GetKeyState(VK_SLOWMOVE)==KEY_HOLD){moveB+=10}
		if(move2>0&&GetKeyState(VK_SLOWMOVE)==KEY_FREE){moveB-=10}
		move2=50.0*sin(moveB);
		Obj_SetPosition(eff,(GetPlayerX+dis*sin(sca*10))+20+move1/3,(GetPlayerY+dis*sin(sca*10))+20-move2/2);
		Obj_SetPosition(eff2,(GetPlayerX+dis*sin(sca*10))-20-move1/3,(GetPlayerY+dis*sin(sca*10))+20-move2/2);
		Obj_SetPosition(eff3,(GetPlayerX+dis*sin(sca*10))+30-move1*1,(GetPlayerY+dis*sin(sca*10))-25-move2/5);
		Obj_SetPosition(eff4,(GetPlayerX+dis*sin(sca*10))-30+move1*1,(GetPlayerY+dis*sin(sca*10))-25-move2/5);
		ObjEffect_SetScale(eff,0.5-0.05*sin(sca),0.5-0.05*sin(sca));
		ObjEffect_SetScale(eff2,0.5-0.05*sin(sca),0.5-0.05*sin(sca));
		ObjEffect_SetScale(eff3,0.5-0.05*sin(sca),0.5-0.05*sin(sca));
		ObjEffect_SetScale(eff4,0.5-0.05*sin(sca),0.5-0.05*sin(sca));
		
		ObjEffect_SetVertexColor(eff,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff,3,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff2,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff2,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff2,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff2,3,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff3,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff3,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff3,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff3,3,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff4,0,alpha,255,255,255);ObjEffect_SetVertexColor(eff4,1,alpha,255,255,255);
		ObjEffect_SetVertexColor(eff4,2,alpha,255,255,255);ObjEffect_SetVertexColor(eff4,3,alpha,255,255,255);
		
		if(OnMissed==true){alpha=0}
		if(OnMissed==false){alpha=255}
		
		yield;
	}
}