#e
#Title[ubh}[L[@-Extra-v]
#Text[]
#Image[]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
	#include_function ".\lib\lib_anime_Ikumi.txt"

	let csd = GetCurrentScriptDirectory;

	let cx = GetCenterX;
	let cy = GetCenterY;

	let a = 0;
	let c_ang = 0;
	let c_scale;

	let img = csd ~ "img\dot_ikumi.png";
	let se = csd ~ "se\tm2_bom003.wav";

	@Initialize{
		SetLife(2500);
		SetDamageRate(50, 0);

		LoadSE(se);
		LoadGraphic(img);

		InitializeAction();
		LastSpell;
		TMain;
	}

	@MainLoop{
		if(OnEnemySpell){
			SetCollisionA(GetX, GetY, 25);
			SetCollisionB(GetX, GetY, 20);
		}

		yield;
	}

	@DrawLoop{
		if(OnEnemySpell){
			SetGraphicScale(1.0, 1.0);
			SetGraphicAngle(0,0,0);
			SetRenderState(ALPHA);
			SetAlpha(255);
			_DrawBoss(img, GetX, GetY);
		}
	}

	@Finalize{
	}

	task TMain{
		SetX(cx);
		SetY(190);
		wait(60);

		CutIn(YOUMU, "ubh}[L[@-Extra-v", "", 0, 0, 0, 0);
		SetScore(10000000);
		SetTimer(104);
		SetAction(ACT_SPELL, 150);
		wait(180);
		TShot;

		wait(360);
		SetDamageRate(70, 0);
	}

	task TShot{
		loop(100000){
			SetAction(ACT_SHOTB, 60);
			Mercury01(GetX, GetY, 6, 130, RED01);
			Mercury01(GetX, GetY, 6, 50, RED01);
			wait(210);
			SetAction(ACT_SHOTB, 60);
			Mercury01(GetX, GetY, 6, 210, RED01);
			Mercury01(GetX, GetY, 6, -30, RED01);
			wait(210);
			SetAction(ACT_SHOTB, 60);
			Mercury01(GetX, GetY, 6, 265, RED01);
			Mercury01(GetX, GetY, 6, -85, RED01);
			wait(210);
			SetAction(ACT_SHOTB, 60);
			Mercury01(GetX, GetY, 6, 270, RED01);
			Mercury01(GetX, GetY, 6, 90, RED01);
			wait(210);
		}
	}

	task Mercury01(x, y, speed, angle, img){
		CreateLaser01(x, y, speed, angle, 190, 10, img, 30);
		let frame = 0;
		let obj   = CreateLaser01(x, y, speed, angle, 190, 10, img, 30);
		while(!Obj_BeDeleted(obj)){
			if(Obj_GetX(obj)<=40 &&frame==0){
				let angle02 = -90;
				loop(7){
					Mercury02(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img, true, true, true, false);
					angle02+=180/6;
				}
				loop(24){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.25, angle, img, 0);
					angle+=360/24;
				}
				frame++;
				PlaySE(se);
			}
			if(Obj_GetX(obj)>=408 &&frame==0){
				let angle02 = 90;
				loop(7){
					Mercury02(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img, true, false, true, true);
					angle02+=180/6;
				}
				loop(24){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.25, angle, img, 0);
					angle+=360/24;
				}
				frame++;
				PlaySE(se);
			}
			if(Obj_GetY(obj)<=24 &&frame==0){
				let angle02 = 0;
				loop(7){
					Mercury02(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img, false, true, true, true);
					angle02+=180/6;
				}
				loop(24){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.25, angle, img, 0);
					angle+=360/24;
				}
				frame++;
				PlaySE(se);
			}
			if(Obj_GetY(obj)>=456 &&frame==0){
				let angle02 = 180;
				loop(7){
					Mercury02(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img, true, true, false, true);
					angle02+=180/6;
				}
				loop(24){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.25, angle, img, 0);
					angle+=360/24;
				}
				frame++;
				PlaySE(se);
			}
			yield;
		}
	}

	task Mercury02(x, y, speed, angle, img, up, right, down, left){
		CreateLaser01(x, y, speed, angle, 200, 10, img, 0);
		let frame = 0;
		let obj   = CreateLaser01(x, y, speed, angle, 190, 10, img, 0);
		while(!Obj_BeDeleted(obj)){
			if(Obj_GetX(obj)<=40 &&frame==0 && left){
				let angle02 = -90;
				loop(7){
					Mercury03(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img);
					angle02+=180/6;
				}
				loop(36){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, angle, img, 0);
					angle+=360/36;
				}
				frame++;
				PlaySE(se);
			}
			if(Obj_GetX(obj)>=408 &&frame==0 && right){
				let angle02 = 90;
				loop(7){
					Mercury03(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img);
					angle02+=180/6;
				}
				loop(36){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, angle, img, 0);
					angle+=360/36;
				}
				frame++;
				PlaySE(se);
			}
			if(Obj_GetY(obj)<=24 &&frame==0 && up){
				let angle02 = 0;
				loop(7){
					Mercury03(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img);
					angle02+=180/6;
				}
				loop(36){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, angle, img, 0);
					angle+=360/36;
				}
				frame++;
				PlaySE(se);
			}
			if(Obj_GetY(obj)>=456 &&frame==0 && down){
				let angle02 = 180;
				loop(7){
					Mercury03(Obj_GetX(obj), Obj_GetY(obj), speed+0.25, angle02, img);
					angle02+=180/6;
				}
				loop(36){
					CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, angle, img, 0);
					angle+=360/36;
				}
				frame++;
				PlaySE(se);
			}
			yield;
		}
	}

	task Mercury03(x, y, speed, angle, img){
		CreateLaser01(x, y, speed, angle, 190, 10, img, 0);
		let frame = 0;
		let obj   = CreateLaser01(x, y, speed, angle, 190, 10, img, 0);
	}

	function wait(w){
		loop(w){
			yield;
		}
	}
}


