	function stage1 {
		if(GetPlayerType==USER_PLAYER) { RaiseError("Why are you using this player","Error"); }
		PlayMusic(music1);
		wait(180);
		local {
			let color = 0;
			loop(15) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 A.txt", GetClipMaxX, GetCenterY-100, 7, 180, [color, 0]);
				color++; if(color >= 8) { color-=8; }
				wait(10);
			}
			wait(60);
			loop(15) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 A.txt", GetClipMinX, GetCenterY, 7, 0, [color, 0]);
				color++; if(color >= 8) { color-=8; }
				wait(10);
			}
			wait(120);
			let temp;
			temp = 0;
			loop(8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 A.txt", GetClipMinX+temp*65, GetClipMaxY, 7, -90, [color, 1]);
				temp+=1; color++; if(color >= 8) { color-=8; }
				wait(10);
			}
			temp = 0;
			loop(8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 A.txt", GetClipMaxX-temp*65, GetClipMinY, 7, 110-temp/8*40, [color, 1]);
				temp+=1; color++; if(color >= 8) { color-=8; }
				wait(10);
			}
			wait(60);
			loop(60) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 B.txt", GetCenterX, GetCenterY/2, 2, rand(0,360), 0);
				wait(5);
			}
			wait(300);
			temp = 0;
			loop(5) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 C.txt", GetCenterX+rand(-100, 100), GetCenterY/2+rand(-50, 50), 0, 0, 0);
				loop(3) {
					CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 A.txt", GetCenterX, GetCenterY, 3, temp, [color, 1]);
					CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 A.txt", GetCenterX, GetCenterY, 3, temp+180, [color, 1]);
					temp+=30; if(temp >= 360) { temp-=360; } color++; if(color >= 8) { color-=8; }
					wait(30);
				}
			}
			wait(300);
		}
		local {
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "cirno mid.txt", GetCenterX, GetCenterY, 0, 0, 0);
			waitToEnemyNum(0);
			wait(180);
		}
		local {
			let color = 0;
			loop(15) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 D.txt", GetClipMaxX, GetCenterY-100, 5, 180+rand(-25,25), [color, 0]);
				color++; if(color >= 8) { color-=8; }
				wait(15);
			}
			wait(60);
			loop(15) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 D.txt", GetClipMinX, GetCenterY+100, 5, 0+rand(-25,25), [color, 0]);
				color++; if(color >= 8) { color-=8; }
				wait(15);
			}
			wait(120);
			let temp;
			temp = 0;
			CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 E.txt", GetCenterX-150, GetCenterY, 0, 0, 0);
			CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 E.txt", GetCenterX+150, GetCenterY, 0, 0, 0);
			loop(8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 D.txt", GetClipMinX, GetClipMaxY-temp*65, 5, 0, [color, 1]);
				temp+=1; color++; if(color >= 8) { color-=8; }
				wait(15);
			}
			temp = 0;
			CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 E.txt", GetCenterX, GetCenterY-200, 0, 0, 0);
			CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 E.txt", GetCenterX, GetCenterY+200, 0, 0, 0);
			loop(8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 1 D.txt", GetClipMaxX, GetClipMinY+temp*65, 5, 180, [color, 1]);
				temp+=1; color++; if(color >= 8) { color-=8; }
				wait(15);
			}
			wait(60);
		}
		local {
			wait(180);
			DeleteMusic(music1);
			LoadMusic(music1);
			PlayMusic(music2);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "cirno boss.txt", GetCenterX, GetCenterY, 0, 0, 0);
			waitToEnemyNum(0);
			FadeOutMusic(music2, 20);
			wait(120);
			DeleteMusic(music2);
			LoadMusic(music2);
		}
	}
	function stage2 {
		if(GetPlayerType==USER_PLAYER) { RaiseError("Why are you using this player","Error"); }
		PlayMusic(music1);
		wait(180);
		local {
			let color = 0;
			ascent(i in 0..8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetClipMaxX, GetCenterY-100+i*35, 7, 180, [color, 0]);
				color++; if(color >= 8) { color-=8; }
				wait(10);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetClipMinX, GetCenterY-100+i*35, 7, 0, [color, 0]);
				color++; if(color >= 8) { color-=8; }
				wait(10);
			}
			wait(120);
			ascent(i in 0..8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 B.txt", GetCenterX+100*cos(-90+i*360/8), GetCenterY+100*sin(-90+i*360/8), 0, 0, [color, 0]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX+i*30, GetClipMaxY+30, 10, -90, [color, 1]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX-i*30, GetClipMaxY+30, 10, -90, [color, 1]);
				color++; if(color >= 8) { color-=8; }
				wait(20);
			}
			wait(180);
			ascent(i in 0..8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 B.txt", GetCenterX-100*cos(-90+i*360/8), GetCenterY+100*sin(-90+i*360/8), 0, 0, [color, 0]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX+i*30+15, GetClipMaxY+30, 10, -90, [color, 1]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX-i*30-15, GetClipMaxY+30, 10, -90, [color, 1]);
				color++; if(color >= 8) { color-=8; }
				wait(20);
			}
			wait(180);
			ascent(n in 0..5) {
				ascent(i in -5..6) {
					CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 B.txt", GetCenterX+i*55, GetCenterY-125+n*100, 0, 0, [color, 0]);
					color++; if(color >= 8) { color-=8; }
					wait(20);
				}
				ascent(i in -5..6) {
					CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 B.txt", GetCenterX-i*55, GetCenterY-125+50+n*100, 0, 0, [color, 0]);
					color++; if(color >= 8) { color-=8; }
					wait(20);
				}
			}
			wait(180);
			ascent(n in 0..5) {
				ascent(i in -5..6) {
					CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX+i*55, GetCenterY-125+n*100, 0, 0, [color, 0]);
					color++; if(color >= 8) { color-=8; }
					wait(20);
				}
				ascent(i in -5..6) {
					CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX-i*55, GetCenterY-125+50+n*100, 0, 0, [color, 0]);
					color++; if(color >= 8) { color-=8; }
					wait(20);
				}
			}
			wait(180);
			ascent(n in 0..15) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 C.txt", GetClipMinX+384/15*n, GetClipMinY, 0, 0, [color, 0]);
				color++; if(color >= 8) { color-=8; }
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 C.txt", GetClipMaxX-384/15*n, GetClipMaxY, 0, 0, [color, 0]);
				color++; if(color >= 8) { color-=8; }
			}
			ascent(n in 0..19) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 C.txt", GetClipMaxX, GetClipMinY+448/19*n, 0, 0, [color, 0]);
				color++; if(color >= 8) { color-=8; }
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 C.txt", GetClipMinX, GetClipMaxY-448/19*n, 0, 0, [color, 0]);
				color++; if(color >= 8) { color-=8; }
			}
			wait(600);
			ascent(i in 0..8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 B.txt", GetCenterX+175*cos(-90+i*360/8), GetCenterY+175*sin(-90+i*360/8), 0, 0, [color, 0]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX+i*30, GetClipMaxY+30, 10, -90, [color, 1]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX-i*30, GetClipMaxY+30, 10, -90, [color, 1]);
				color++; if(color >= 8) { color-=8; }
				wait(20);
			}
			wait(180);
			ascent(i in 0..8) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 B.txt", GetCenterX-175*cos(-90+i*360/8), GetCenterY+175*sin(-90+i*360/8), 0, 0, [color, 0]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX+i*30+15, GetClipMaxY+30, 10, -90, [color, 1]);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", GetCenterX-i*30-15, GetClipMaxY+30, 10, -90, [color, 1]);
				color++; if(color >= 8) { color-=8; }
				wait(20);
			}
			wait(180);
			let color = 0;
			ascent(i in 0..30) {
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", rand(GetClipMinX,GetClipMaxX), GetClipMinY, 8, 90+rand(-25,25), [color, 1]);
				color++; if(color >= 8) { color-=8; }
				wait(5);
				CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 A.txt", rand(GetClipMinX,GetClipMaxX), GetClipMaxY, 8, -90+rand(-25,25), [color, 1]);
				color++; if(color >= 8) { color-=8; }
				wait(5);
			}
			wait(120);
			CreateEnemyFromFile(GetCurrentScriptDirectory ~ "fairy 2 D.txt", GetCenterX, GetCenterY, 0, 0, 0);
		}
		local {
			wait(180);
			DeleteMusic(music1);
			LoadMusic(music1);
			PlayMusic(music2);
			let angle = atan2(GetPlayerY-GetCenterY/2, GetPlayerX-GetCenterX);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "marisa boss.txt", GetCenterX+300*cos(angle), GetCenterY/2+300*sin(angle), 0, 0, 0);
			waitToEnemyNum(0);
			FadeOutMusic(music2, 20);
			wait(120);
			DeleteMusic(music2);
			LoadMusic(music2);
		}
	}
	function stage3 {
		if(GetPlayerType==USER_PLAYER) { RaiseError("Why are you using this player","Error"); }
		PlayMusic(music1);
		local {
			DeleteMusic(music1);
			LoadMusic(music1);
		}
		local {
			PlayMusic(music3);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "yukari boss 1.txt", GetCenterX, GetCenterY, 0, 0, 0); waitToEnemyNum(0);
			FadeOutMusic(music3, 10); wait(480); DeleteMusic(music3); LoadMusic(music3);
		}
		local {
			PlayMusic(music3);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "yukari boss 2.txt", GetCenterX, GetCenterY, 0, 0, 0); waitToEnemyNum(0);
			FadeOutMusic(music3, 10); wait(480); DeleteMusic(music3); LoadMusic(music3);
		}
		local {
			PlayMusic(music3);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "yukari boss 3.txt", GetCenterX, GetCenterY, 0, 0, 0); waitToEnemyNum(0);
			FadeOutMusic(music3, 10); wait(480); DeleteMusic(music3); LoadMusic(music3);
		}
		local {
			PlayMusic(music4);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "yukari boss 4.txt", GetCenterX, GetCenterY, 0, 0, 0); waitToEnemyNum(0);
			FadeOutMusic(music4, 10); wait(480); DeleteMusic(music4);
		}
		local {
			PlayMusic(music4);
			CreateEnemyBossFromFile(GetCurrentScriptDirectory ~ "yukari boss 5.txt", GetCenterX, GetCenterY, 0, 0, 0); waitToEnemyNum(0);
			AddScore(9-GetScore); SetDefaultStatusVisible(true);
			FadeOutMusic(music4, 10); wait(480); DeleteMusic(music4);
		}
		Clear;
	}