task BlackOut(long){
	let id       = Obj_Create(OBJ_EFFECT);
	let sca      = 0;
	let alpha    = 150;
	let rgb      = [0,0,0];
	let die      = 0;
	
	ObjEffect_SetTexture(id,imgba);
	ObjEffect_SetRenderState(id,ALPHA);
	ObjEffect_SetPrimitiveType(id,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetLayer(id,2);
	ObjEffect_CreateVertex(id,4);
	ObjEffect_SetVertexXY(id,0,400/-2,400/-2);
	ObjEffect_SetVertexXY(id,1,400/-2,400/2);
	ObjEffect_SetVertexXY(id,2,400/2,400/-2);
	ObjEffect_SetVertexXY(id,3,400/2,400/2);
	ObjEffect_SetVertexUV(id,0,0,0);
	ObjEffect_SetVertexUV(id,1,0,400);
	ObjEffect_SetVertexUV(id,2,400,0);
	ObjEffect_SetVertexUV(id,3,400,400);
	
	loop{
		die++;
		if(sca<3){sca+=0.05;}
		Obj_SetPosition(id,GetPlayerX,GetPlayerY);
		ObjEffect_SetScale(id,sca,sca);
		ObjEffect_SetVertexColor(id,0,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id,1,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id,2,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id,3,alpha,rgb[0],rgb[1],rgb[2]);
		
		if(die>long){
			if(alpha>0){alpha-=15;}
			if(alpha<=0){Obj_Delete(id);}
		}
		yield;
	}
}

task TheWorldEffect{
	let id		= [Obj_Create(OBJ_EFFECT),
					Obj_Create(OBJ_EFFECT),
					Obj_Create(OBJ_EFFECT),
					Obj_Create(OBJ_EFFECT)];
	let i		= 0;
	let cc		= 0;
	let cc2		= 0;
	let frame	= 0;
	let dis		= 0;
	let spin	= 0;
	let alpha	= 0;
	let rgb		= [255,255,255];
	
	loop(4){
		ObjEffect_SetTexture(id[i],imgb1);
		ObjEffect_SetRenderState(id[i],ALPHA);
		ObjEffect_SetPrimitiveType(id[i],PRIMITIVE_TRIANGLESTRIP);
		ObjEffect_SetLayer(id[i],2);
		ObjEffect_CreateVertex(id[i],4);
		i++;
	}
	ObjEffect_SetTexture(id[0],imgb2);
	ObjEffect_SetVertexXY(id[0],0,384/-2,448/-2);
	ObjEffect_SetVertexXY(id[0],1,384/-2,448/2);
	ObjEffect_SetVertexXY(id[0],2,384/2,448/-2);
	ObjEffect_SetVertexXY(id[0],3,384/2,448/2);
	ObjEffect_SetVertexXY(id[1],0,252/-2,252/-2);
	ObjEffect_SetVertexXY(id[1],1,252/-2,252/2);
	ObjEffect_SetVertexXY(id[1],2,252/2,252/-2);
	ObjEffect_SetVertexXY(id[1],3,252/2,252/2);
	ObjEffect_SetVertexXY(id[2],0,12/-2,-68);
	ObjEffect_SetVertexXY(id[2],1,12/-2,0);
	ObjEffect_SetVertexXY(id[2],2,12/2,-68);
	ObjEffect_SetVertexXY(id[2],3,12/2,0);
	ObjEffect_SetVertexXY(id[3],0,8/-2,-122);
	ObjEffect_SetVertexXY(id[3],1,8/-2,0);
	ObjEffect_SetVertexXY(id[3],2,8/2,-122);
	ObjEffect_SetVertexXY(id[3],3,8/2,0);
	
	loop{
		SetIntersectionCircle(GetPlayerX,GetPlayerY,200,4,true);
		cc2+=0.05;
		cc+=cc2;
		frame++;
		Obj_SetPosition(id[0],GetCenterX+5*sin(frame*100),GetCenterY);
		Obj_SetPosition(id[1],GetPlayerX-3*sin(frame*100),GetPlayerY);
		Obj_SetPosition(id[2],GetPlayerX-3*sin(frame*100),GetPlayerY);
		Obj_SetPosition(id[3],GetPlayerX-3*sin(frame*100),GetPlayerY);
		ObjEffect_SetAngle(id[2],0,0,cc*2);
		ObjEffect_SetAngle(id[3],0,0,cc*-1);
		
		if(frame<283){
			if(alpha<255){alpha+=15;}
		}
		
		if(frame>=283){
			if(alpha>0){alpha-=15;}
		}
		
		ObjEffect_SetVertexUV(id[0],0,0,0-cc);
		ObjEffect_SetVertexUV(id[0],1,0,448-cc);
		ObjEffect_SetVertexUV(id[0],2,384,0-cc);
		ObjEffect_SetVertexUV(id[0],3,384,448-cc);
		ObjEffect_SetVertexUV(id[1],0,48,0);
		ObjEffect_SetVertexUV(id[1],1,48,251);
		ObjEffect_SetVertexUV(id[1],2,300,0);
		ObjEffect_SetVertexUV(id[1],3,300,251);
		ObjEffect_SetVertexUV(id[2],0,5,4);
		ObjEffect_SetVertexUV(id[2],1,5,72);
		ObjEffect_SetVertexUV(id[2],2,17,4);
		ObjEffect_SetVertexUV(id[2],3,17,72);
		ObjEffect_SetVertexUV(id[3],0,30,44);
		ObjEffect_SetVertexUV(id[3],1,30,166);
		ObjEffect_SetVertexUV(id[3],2,38,44);
		ObjEffect_SetVertexUV(id[3],3,38,166);
		ObjEffect_SetVertexColor(id[0],0,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[0],1,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[0],2,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[0],3,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[1],0,alpha/2,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[1],1,alpha/2,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[1],2,alpha/2,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[1],3,alpha/2,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[2],0,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[2],1,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[2],2,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[2],3,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[3],0,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[3],1,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[3],2,alpha,rgb[0],rgb[1],rgb[2]);
		ObjEffect_SetVertexColor(id[3],3,alpha,rgb[0],rgb[1],rgb[2]);
		
		if(frame>=299){
			Obj_Delete(id[0]);
			Obj_Delete(id[1]);
			Obj_Delete(id[2]);
			Obj_Delete(id[3]);
			break;
		}
		
		yield;
	}
}