function worldPlay02_0 { 
	
	// --------------------- pattern 00 -----------------------------------
	wait(60);
	enyAfroSpotBalls(GetClipMinX-16,GetCenterY-32,GetCenterX-128,GetClipMinY+32,YINYANG_RED,"left");
	enyAfroSpotBalls(GetClipMinX-16,GetCenterY-16,GetCenterX-96,GetClipMinY+32,YINYANG_PURPLE,"right");
	enyAfroSpotBalls(GetClipMinX-16,GetCenterY,GetCenterX-64,GetClipMinY+32,YINYANG_GREEN,"left");
	enyAfroSpotBalls(GetClipMinX-16,GetCenterY,GetCenterX-32,GetClipMinY+32,YINYANG_BLUE,"right");
	
	enyAfroSpotBalls(GetClipMaxX+16,GetCenterY-32,GetCenterX+32,GetClipMinY+32,YINYANG_PURPLE,"right");
	enyAfroSpotBalls(GetClipMaxX+16,GetCenterY-16,GetCenterX+64,GetClipMinY+32,YINYANG_BLUE,"left");
	enyAfroSpotBalls(GetClipMaxX+16,GetCenterY,GetCenterX+96,GetClipMinY+32,YINYANG_RED,"right");
	enyAfroSpotBalls(GetClipMaxX+16,GetCenterY,GetCenterX+128,GetClipMinY+32,YINYANG_GREEN,"left");
	
	wait(150);
	enyAfroSpotFairy(GetClipMinX-16,GetCenterY,GetCenterX+96,GetCenterY-96,LARGE_AFRO,"left");
	enyAfroSpotFairy(GetClipMaxX+16,GetCenterY,GetCenterX-96,GetCenterY-96,LARGE_AFRO,"right");
	wait(360);
	
	// --------------------- pattern 01 -----------------------------------

	enyAfroRushingFairy01(GetClipMinX-16,48,GetClipMaxX+32,128,SMALL_AFRO_RED,4,0,-1.2);
	enyAfroRushingFairy01(GetClipMaxX+16,48,GetClipMinX-32,128,SMALL_AFRO_BLUE,4,180,1.2);

	// Nested task
	task preBalls00 {
		ascent(i in 0..2) {
			enyAfroBallAppear(GetClipMinX+32,GetCenterY-120,YINYANG_RED);
			wait(30);
			enyAfroBallAppear(GetClipMinX+64,GetCenterY-96,YINYANG_BLUE);
			wait(30);
			enyAfroBallAppear(GetClipMinX+96,GetCenterY-144,YINYANG_RED);
			wait(30);
		}
	}
	task preBalls01 {
		ascent(i in 0..2) {
			enyAfroBallAppear(GetClipMaxX-32,GetCenterY-120,YINYANG_BLUE);
			wait(30);
			enyAfroBallAppear(GetClipMaxX-64,GetCenterY-96,YINYANG_RED);
			wait(30);
			enyAfroBallAppear(GetClipMaxX-96,GetCenterY-144,YINYANG_BLUE);
			wait(30);
		}
	}	
	preBalls00;
	wait(45);
	preBalls01; 
	enyAfroRushingFairy01(GetClipMinX-16,48,GetClipMaxX+32,128,SMALL_AFRO_RED,4,0,-1.2);
	wait(60);
	enyAfroRushingFairy01(GetClipMaxX+16,48,GetClipMinX-32,128,SMALL_AFRO_BLUE,4,180,1.2);
	enyAfroRushingFairy01(GetClipMinX-16,48,GetClipMaxX+32,128,SMALL_AFRO_RED,4,0,-1.2);		
	wait(360);
	
	ascent(i in 0..12) { 
		enyAfroRushingBalls(GetClipMaxX+16,GetCenterY+rand_int(-48,64),GetClipMinX-32,GetClipMinY-rand_int(-32,-64),YINYANG_BLUE,rand_int(6,8),"right");
		wait(3);
		enyAfroRushingBalls(GetClipMaxX+16,GetCenterY+rand_int(-48,64),GetClipMinX-32,GetClipMinY-rand_int(-32,-64),YINYANG_RED,rand_int(6,8),"right");
		wait(3);
	}
	wait(60);
	ascent(i in 0..12) { 
		enyAfroRushingBalls(GetClipMinX-16,GetCenterY+rand_int(-48,64),GetClipMaxX+32,GetClipMinY-rand_int(-32,-64),YINYANG_GREEN,rand_int(6,8),"left");
		wait(3);
		enyAfroRushingBalls(GetClipMinX-16,GetCenterY+rand_int(-48,64),GetClipMaxX+32,GetClipMinY-rand_int(-32,-64),YINYANG_PURPLE,rand_int(6,8),"left");
		wait(3);
	}	
	wait(120);
	
	// --------------------- pattern 02 -----------------------------------
	
	// Nested task
	task ballsLeftAppearLeft { 
		enyAfroBallAppear(64,32,YINYANG_RED);
		wait(10);
		enyAfroBallAppear(16,100,YINYANG_RED);
		wait(10);
		enyAfroBallAppear(112,128,YINYANG_RED);
		wait(10);
		enyAfroBallAppear(96,48,YINYANG_RED);
		wait(10);
		enyAfroBallAppear(32,160,YINYANG_RED);
		wait(10);
		enyAfroBallAppear(160,74,YINYANG_RED);	
	}
	ballsLeftAppearLeft;
	wait(30);
	ascent(i in 0..5) { 
		enyAfroRushingFairy01(GetClipMaxX+16,48,GetClipMinX-32,128,SMALL_AFRO_BLUE,4,180,1.2);
		wait(10);
		enyAfroRushingFairy01(GetClipMaxX+16,48,GetClipMinX-32,128,SMALL_AFRO_RED,4,180,1.2);	
		wait(10);
	}
	wait(60);
	
	// Nested task
	task ballsLeftAppearRight { 
		enyAfroBallAppear(284,32,YINYANG_BLUE);
		wait(10);
		enyAfroBallAppear(240,100,YINYANG_BLUE);
		wait(10);
		enyAfroBallAppear(200,128,YINYANG_BLUE);
		wait(10);
		enyAfroBallAppear(330,64,YINYANG_BLUE);
		wait(10);
		enyAfroBallAppear(300,150,YINYANG_BLUE);
		wait(10);
		enyAfroBallAppear(360,74,YINYANG_BLUE);	
	}	
	ballsLeftAppearRight;
	wait(30);
	ascent(i in 0..5) { 
		enyAfroRushingFairy01(GetClipMinX-16,48,GetClipMaxX+32,128,SMALL_AFRO_RED,4,0,-1.2);
		wait(10);
		enyAfroRushingFairy01(GetClipMinX-16,48,GetClipMaxX+32,128,SMALL_AFRO_BLUE,4,0,-1.2);	
		wait(10);
	}	
	wait(160);
	
	// --------------------- pattern 03 -----------------------------------
	
	ascent(i in 0..4) {
		enyAfroStopAndGoFairy(GetClipMinX-16,112+i*16,SMALL_AFRO_BLUE,128-i*32,0);
		wait(15);
	}
	wait(30);
	ascent(i in 0..4) {
		enyAfroStopAndGoFairy(GetClipMaxX+16,112+i*16,SMALL_AFRO_BLUE,-128+i*32,180);
		wait(15);
	}	
	wait(30);
	enyAfroMultiFamFairy(GetCenterX-64,GetClipMinY-16,GetCenterX-64,96,4,FAM_BLUE);
	ascent(i in 0..4) {
		enyAfroStopAndGoFairy(GetClipMinX-16,112+i*16,SMALL_AFRO_BLUE,128-i*32,0);
		wait(15);
	}	
	wait(180);
	ascent(i in 0..12) { 
		enyAfroRushingBalls(GetClipMaxX+16,GetCenterY+rand_int(-48,64),GetClipMinX-32,GetClipMinY-rand_int(-32,-64),YINYANG_BLUE,rand_int(6,8),"right");
		wait(3);
		enyAfroRushingBalls(GetClipMaxX+16,GetCenterY+rand_int(-48,64),GetClipMinX-32,GetClipMinY-rand_int(-32,-64),YINYANG_RED,rand_int(6,8),"right");
		wait(3);
	}		
	wait(30);
	ascent(i in 0..6) { 
		enyAfroRushingBalls(GetClipMaxX+16,112+rand_int(-48,64),GetClipMinX-32,GetClipMaxY+rand_int(-32,-64),YINYANG_PURPLE,rand_int(6,8),"right");
		wait(3);
		enyAfroRushingBalls(GetClipMaxX+16,112+rand_int(-48,64),GetClipMinX-32,GetClipMaxY+rand_int(-32,-64),YINYANG_GREEN,rand_int(6,8),"right");
		wait(3);
	}	
	wait(90);
	enyAfroMultiFamFairy(GetCenterX+64,GetClipMinY-16,GetCenterX+64,96,4,FAM_BLUE);
	ascent(i in 0..4) {
		enyAfroStopAndGoFairy(GetClipMaxX+16,112+i*16,SMALL_AFRO_BLUE,-128+i*32,180);
		wait(15);
	}	
	wait(180);
	ascent(i in 0..12) { 
		enyAfroRushingBalls(GetClipMinX-16,GetCenterY+rand_int(-48,64),GetClipMaxX+32,GetClipMinY-rand_int(-32,-64),YINYANG_GREEN,rand_int(6,8),"left");
		wait(3);
		enyAfroRushingBalls(GetClipMinX-16,GetCenterY+rand_int(-48,64),GetClipMaxX+32,GetClipMinY-rand_int(-32,-64),YINYANG_PURPLE,rand_int(6,8),"left");
		wait(3);
	}		
	wait(30);
	ascent(i in 0..6) { 
		enyAfroRushingBalls(GetClipMinX-16,112+rand_int(-48,64),GetClipMaxX+32,GetClipMaxY+rand_int(-32,-64),YINYANG_PURPLE,rand_int(6,8),"left");
		wait(3);
		enyAfroRushingBalls(GetClipMinX-16,112+rand_int(-48,64),GetClipMaxX+32,GetClipMaxY+rand_int(-32,-64),YINYANG_GREEN,rand_int(6,8),"left");
		wait(3);
	}	
	wait(120);
	
	// --------------------- pattern 04 -----------------------------------
	
	enyAfroSpotFairy(GetClipMinX-16,GetCenterY,GetCenterX+96,GetCenterY-96,LARGE_AFRO,"left");
	enyAfroSpotFairy(GetClipMaxX+16,GetCenterY,GetCenterX-96,GetCenterY-96,LARGE_AFRO,"right");
	
	ascent(i in 0..5) { 
		enyAfroRushingFairy01(GetClipMaxX+16,48,GetClipMinX-32,128,SMALL_AFRO_BLUE,4,180,1.2);
		wait(10);
		enyAfroRushingFairy01(GetClipMaxX+16,48,GetClipMinX-32,128,SMALL_AFRO_RED,4,180,1.2);	
		wait(10);
	}
	wait(240);
	
	// --------------------- pattern 05 -----------------------------------
	// Deleted due to cluttering but kept code in for future reference
	/*
	ascent(i in 0..5) {
		enyAfroBallAppear01((GetClipMinX+32)+i*(GetClipMaxX/5),GetClipMaxY-32,YINYANG_RED);
	}
	wait(15);
	ascent(i in 0..4) {
		enyAfroBallAppear01((GetClipMinX+72)+i*(GetClipMaxX/5),GetClipMaxY-64,YINYANG_BLUE);
	}	
	wait(15);
	ascent(i in 0..5) {
		enyAfroBallAppear01((GetClipMinX+32)+i*(GetClipMaxX/5),GetClipMaxY-96,YINYANG_PURPLE);
	}
	wait(180);
	
	ascent(i in 0..5) {
		enyAfroBallAppear01((GetClipMinX+32)+i*(GetClipMaxX/5),GetClipMinY+32,YINYANG_RED);
	}
	wait(15);
	ascent(i in 0..4) {
		enyAfroBallAppear01((GetClipMinX+72)+i*(GetClipMaxX/5),GetClipMinY+64,YINYANG_GREEN);
	}	
	wait(15);
	ascent(i in 0..5) {
		enyAfroBallAppear01((GetClipMinX+32)+i*(GetClipMaxX/5),GetClipMinY+96,YINYANG_BLUE);
	}	
	wait(240);
	*/
	// --------------------- pattern 06 -----------------------------------	
	
	// Nested task
	task ballsOut {
		enyAfroBallAppear02(GetCenterX-64,GetCenterY-148,YINYANG_PURPLE);
		wait(30);
		enyAfroBallAppear02(GetCenterX,GetCenterY-32,YINYANG_RED);
		wait(30);
		enyAfroBallAppear02(GetCenterX+32,GetCenterY-160,YINYANG_PURPLE);
		wait(30);
		enyAfroBallAppear02(GetCenterX+128,GetCenterY-96,YINYANG_PURPLE);
		wait(30);
		enyAfroBallAppear02(GetCenterX-32,GetCenterY-64,YINYANG_PURPLE);
		wait(30);	
		enyAfroBallAppear02(GetCenterX-112,GetCenterY-112,YINYANG_RED);
		wait(30);
	}
	
	ballsOut;
	wait(120);	
	enyAfroFeverLargeFairy(GetClipMinX-16,120,GetCenterX-96,GetCenterY-120,LARGE_AFRO,FAM_PURPLE,16,"left");
	enyAfroFeverLargeFairy(GetClipMaxX+16,120,GetCenterX+96,GetCenterY-120,LARGE_AFRO,FAM_PURPLE,16,"right");
	wait(240);
	
	// Fog it up for transition change
	while(fogStart > 100 || fogEnd > 200) { fogStart-=80; fogEnd-=80; yield; } 
	
	cleanupWorld;		

	// --------------------- STAGE MUTATION -----------------------------------
	// Sky scraper
	fogStart = 400; fogEnd = 600;
	fogRed = 128; fogGreen = 96; fogBlue = 64;
	cameraShift = 0; cameraLift = 256; cameraZoom = 0; cameraTurn = 90; cameraTilt = 0; camRadius = 768;	
	buildAfro02; stagelook = 4;
	
	// Nested task for fog mutation
	task foggyup2 { 
		loop(600) { fogStart+=40; fogEnd+=40; yield; }
	}
	foggyup2;
	// --------------------- pattern 07 -----------------------------------
	wait(120);

	enyAfroRocketFairy00(GetCenterX-196,GetClipMaxY+16,GetCenterX-64,GetClipMinY-32,SMALL_AFRO_RED,6);
	wait(15);
	enyAfroRocketFairy00(GetCenterX+196,GetClipMaxY+16,GetCenterX+64,GetClipMinY-32,SMALL_AFRO_BLUE,6);

	wait(90);
	enyAfroRocketFairy01(GetCenterX-96,GetClipMaxY+16,GetCenterX-32,GetClipMinY-32,SMALL_AFRO_RED,2);
	wait(30);	
	enyAfroMultiFamFairy(GetCenterX+64,GetClipMinY-16,GetCenterX+64,96,4,FAM_BLUE);
	enyAfroRocketFairy01(GetCenterX+96,GetClipMaxY+16,GetCenterX-64,GetClipMinY-32,SMALL_AFRO_BLUE,2);
	wait(90);	
	enyAfroRocketFairy01(GetCenterX-140,GetClipMaxY+16,GetCenterX+64,GetClipMinY-32,SMALL_AFRO_RED,2);	
	wait(90);
	enyAfroRocketFairy01(GetCenterX+140,GetClipMaxY+16,GetCenterX+16,GetClipMinY-32,SMALL_AFRO_BLUE,2);
	wait(60);	
	enyAfroMultiFamFairy(GetCenterX-64,GetClipMinY-16,GetCenterX-64,96,4,FAM_BLUE);
	enyAfroRocketFairy01(GetCenterX-96,GetClipMaxY+16,GetCenterX-32,GetClipMinY-32,SMALL_AFRO_RED,2);
	
	wait(360); 

	// --------------------- pattern 08 -----------------------------------
	ballsOut;
	wait(360);
	enyAfroMultiFamFairy(GetCenterX-64,GetClipMinY-16,GetCenterX-64,96,4,FAM_BLUE);
	ascent(i in 0..9) { 
		enyAfroRushingFairy00(GetClipMaxX-32,GetClipMinY-16,GetClipMaxX-32,GetClipMaxY+16,SMALL_AFRO_RED,3,1);
		wait(15);
	} 
	ascent(i in 0..9) { 
		enyAfroRushingFairy00(GetClipMinX+32,GetClipMinY-16,GetClipMinX+32,GetClipMaxY+16,SMALL_AFRO_BLUE,3,-1);
		wait(15);
	} 	
	wait(200);
	enyAfroLeftU;
	enyAfroRightU;		
	wait(360);
	// Nested task
	task stopGo00 {
		ascent(i in 0..4) {
			enyAfroStopAndGoFairy(GetClipMinX-16,112+i*16,SMALL_AFRO_BLUE,128-i*32,0);
			wait(15);
		}
	}
	stopGo00;
	// Nested task
	task stopGo01 {
		ascent(i in 0..4) {
			enyAfroStopAndGoFairy(GetClipMaxX+16,112+i*16,SMALL_AFRO_BLUE,-128+i*32,180);
			wait(15);
		}		
	}
	stopGo01;	
	wait(240);
	DeleteShotAll(TYPE_ALL,TYPE_FADE);
}

function worldPlay02_mid { 	
	// --------------------- MID BOSS -------------------------------------
	// Kogasa & Nue mid boss 
	idScript = LoadScriptInThread("script/thdcs/stage/stage02/afromid_main.txt");
	StartScript(idScript);
	wait(60);
	while(!IsCloseScript(idScript) && GetPlayerState() != STATE_END) { yield; }
	plyExtend(GetCenterX+72,100);
	wait(90);
}

function worldPlay02_1 { 	
	// --------------------- pattern 09 -----------------------------------
	enyAfroRocketFairy01(GetCenterX-112,GetClipMaxY+16,GetCenterX-32,GetClipMinY-32,SMALL_AFRO_RED,3);
	wait(30);
	enyAfroRocketFairy01(GetCenterX-128,GetClipMaxY+16,GetCenterX-32,GetClipMinY-32,SMALL_AFRO_RED,3);
	wait(30);
	enyAfroRocketFairy01(GetCenterX-96,GetClipMaxY+16,GetCenterX-32,GetClipMinY-32,SMALL_AFRO_RED,3);
	wait(180);
	
	enyAfroRocketFairy00(GetClipMinX-16,GetClipMinY+164,GetClipMaxX+32,GetClipMinY-64,SMALL_AFRO_RED,6);
	wait(30);
	descent(i in 0..5) { 
		enyAfroRocketFairy02(GetClipMinX-16,GetClipMinY+112-(i*16),SMALL_AFRO_RED,i*16,"right");
		wait(10);
	}
	descent(i in 0..5) { 
		enyAfroRocketFairy02(GetClipMaxX+16,GetClipMinY+112-(i*16),SMALL_AFRO_BLUE,i*16,"left");
		wait(10);
	}
	wait(60);
	
	enyAfroRocketFairy00(GetClipMinX-16,GetClipMinY+164,GetClipMaxX+32,GetClipMinY-64,SMALL_AFRO_RED,6);
	wait(15);
	enyAfroRocketFairy00(GetClipMaxX+16,GetClipMinY+164,GetClipMinX-32,GetClipMinY-64,SMALL_AFRO_RED,6);
	wait(15);
	descent(i in 0..7) { 
		enyAfroRocketFairy02(GetClipMinX-16,GetClipMinY+112-(i*16),SMALL_AFRO_RED,i*16,"right");
		wait(10);
	}
	descent(i in 0..7) { 
		enyAfroRocketFairy02(GetClipMaxX+16,GetClipMinY+112-(i*16),SMALL_AFRO_BLUE,i*16,"left");
		wait(10);
	}
	wait(60);
	descent(i in 0..10) { 
		enyAfroRocketFairy02(GetClipMinX-16,GetClipMinY+144-(i*16),SMALL_AFRO_BLUE,i*16,"right");
		wait(10);
	}
	descent(i in 0..10) { 
		enyAfroRocketFairy02(GetClipMaxX+16,GetClipMinY+144-(i*16),SMALL_AFRO_RED,i*16,"left");
		wait(10);
	}
	wait(60);
	descent(i in 0..10) { 
		enyAfroRocketFairy02(GetClipMinX-16,GetClipMinY+144-(i*16),SMALL_AFRO_BLUE,i*16,"right");
		wait(10);
	}
	descent(i in 0..10) { 
		enyAfroRocketFairy02(GetClipMaxX+16,GetClipMinY+144-(i*16),SMALL_AFRO_RED,i*16,"left");
		wait(10);
	}	
	wait(120);
	// --------------------- pattern 10 -----------------------------------
	// Nested task
	task circleBallAppear00 {
		let dir = 270;
		ascent(i in 0..8) {
			enyAfroBallAppear03(GetCenterX+96+64*cos(dir),GetCenterY-120+64*sin(dir),YINYANG_RED);
			dir+=360/8;
			wait(3);
		}
	}
	circleBallAppear00;

	wait(30);
	
	// Nested task
	task circleBallAppear01 {
		let dir = 270;
		ascent(i in 0..8) {
			enyAfroBallAppear03(GetCenterX-96+64*cos(dir),GetCenterY-120+64*sin(dir),YINYANG_RED);
			dir+=360/8;
			wait(3);
		}
	}
	circleBallAppear01;	

	wait(180); 
	
	// --------------------- pattern 11 -----------------------------------	
	
	enyAfroFeverLargeFairy01(GetClipMinX-16,GetCenterY-224,GetClipMinX+64,GetCenterY-128,LARGE_AFRO,FAM_GREEN,5,FAM_BLUE,3,"left");
	wait(30);
	ascent(i in 0..13) { 
		enyAfroRushingFairy00(GetClipMaxX-32,GetClipMinY-16,GetClipMaxX-32,GetClipMaxY+16,SMALL_AFRO_RED,3,1);
		wait(15);
	} 
	wait(200);
	enyAfroFeverLargeFairy01(GetClipMaxX+16,GetCenterY-224,GetClipMaxX-64,GetCenterY-128,LARGE_AFRO,FAM_GREEN,5,FAM_BLUE,3,"right");
	wait(30);
	ascent(i in 0..13) { 
		enyAfroRushingFairy00(GetClipMinX+32,GetClipMinY-16,GetClipMinX+32,GetClipMaxY+16,SMALL_AFRO_BLUE,3,-1);
		wait(15);
	} 	
	wait(200);

	// --------------------- pattern 12 -----------------------------------
	
	enyAfroFeverLargeFairy01(GetClipMinX-16,GetCenterY-224,GetClipMinX+64,GetCenterY-128,LARGE_AFRO,FAM_GREEN,5,FAM_BLUE,3,"left");
	enyAfroFeverLargeFairy01(GetClipMaxX+16,GetCenterY-224,GetClipMaxX-64,GetCenterY-128,LARGE_AFRO,FAM_GREEN,5,FAM_BLUE,3,"right");
	wait(230);
	enyAfroFeverLargeFairy02(GetClipMinX-16,GetCenterY-224,GetClipMinX+64,GetCenterY-128,LARGE_AFRO,FAM_GREEN,5,FAM_BLUE,3,"left");
	enyAfroFeverLargeFairy02(GetClipMaxX+16,GetCenterY-224,GetClipMaxX-64,GetCenterY-128,LARGE_AFRO,FAM_GREEN,5,FAM_BLUE,3,"right");
	wait(300);
	while(fogStart > 100 || fogEnd > 200) { fogStart-=100; fogEnd-=100; yield; } 
	wait(60);
	cleanupWorld;	
	
	// --------------------- STAGE MUTATION -----------------------------------
	// Roof top
	fogStart = 100; fogEnd = 300;
	fogRed = 128; fogGreen = 96; fogBlue = 64;
	cameraShift = 0; cameraLift = 0; cameraZoom = 1024; cameraTurn = 90; cameraTilt = -16; camRadius = 768;	
	buildAfro03; stagelook = 5;

	task foggyup3 { 
		while(fogStart < 4000 || fogEnd < 6000) { fogStart+=50; fogEnd+=50; yield; } 
	} 
	foggyup3; 
	
	wait(240);
}

function worldPlay02_boss { 	

	// --------------------- STAGE BOSS -----------------------------------
	// Afro Boss
	idScript = LoadScriptInThread("script/thdcs/stage/stage02/afroboss_main.txt"); 
	StartScript(idScript);
	wait(60);
	while(!IsCloseScript(idScript) && GetPlayerState() != STATE_END) { yield; }
}