#e
#Title[zNuˎR_v]
#Text[Rs[Ă݂]
#Image[]
#PlayLevel[Normal]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
	#include_function ".\lib\Common.dnh"
	
	let bossImg = "";
	let back = "";
	let name = "zNuˎR_v";
	
	let xIni = cx;
	let yIni = cy - 76;
	let wIni = 120;
	let isShot = 1;
	
	@Initialize {
		SetScore(10000);
		SetLife(1000);
		SetDamageRate(20, 10);
		SetTimer(80);
		
		CutIn(YOUMU, name, "", 0, 0, 0, 0);
		
		LoadUserShotData(CSD ~ "img\shot_All.dnh");
		LoadGraphic(bossImg);
		LoadGraphic(back);
		
		CutIn(YOUMU, name, "", 0, 0, 0, 0);
		
		rand_initialize(1);
		
		TMain;
	}

	@MainLoop {
		SetCollisionA(GetX, GetY, 32);
		SetCollisionB(GetX, GetY, 32);
		yield;
	}

	@DrawLoop {
		DrawGraphic(GetX, GetY);
	}

	@Finalize {
		DeleteGraphic(bossImg)
	}

///////////////////////////////////////////////////////////////////////////////////////////////////

	task TMain {
		getReady(wIni);
		
		wait(30);
		
		loop {
			wait(30);
			shot;
			wait(120);
			isShot = 1;
			while(isShot) {
				yield;
			}
		}
	}
	
	task shot {
		let angle = rand(0, 360);
		let span = 360 / 5;
		
		loop(5) {
			_shot(angle);
			angle += span;
		}
		
		task _shot(_angle) {
			let _r = 40;
			let _x = GetX + cos(_angle) * _r;
			let _y = GetY + sin(_angle) * _r;
			let n = 50;
			let w = 2;
			yield;
			
			let j = rand(-30, 30);
			ascent(let i in 0..n) {
				let x2 = _x + cos(_angle + i * 7 + 180) * _r;
				let y2 = _y + sin(_angle + i * 7 + 180) * _r;
				__white(x2, y2, i, j);
				__knife(x2, y2, i);
				_r += 1.5;
				
				wait(w);
			}
			
			task __white(__x, __y, __i, __j) {
				let obj = Obj_Create(OBJ_SHOT);
				Obj_SetPosition(obj, __x, __y);
				Obj_SetSpeed(obj, 0);
				ObjShot_SetGraphic(obj, WHITE + MIDDLE);
				ObjShot_SetDelay(obj, 10);
				yield;
				
				loop(n * w / 3 + __i * 2) {
					Obj_SetAngle(obj, GetAngleToPlayer + ((__i % (n / 2)) - (n / 4)) * (540 / n) + __j);
					yield;
				}
				
				loop(100) {
					Obj_SetSpeed(obj, Obj_GetSpeed(obj) + 0.015);
					yield;
				}
			}
			
			task __knife(__x, __y, __i) {
				let obj = Obj_Create(OBJ_SHOT);
				Obj_SetPosition(obj, __x, __y);
				Obj_SetSpeed(obj, 0);
				ObjShot_SetGraphic(obj, RED + KNIFE);
				ObjShot_SetDelay(obj, 10);
				yield;
				
				loop(n * w / 3 + (120 - __i) * 2 + rand_int(-20, 20)) {
					Obj_SetAngle(obj, direction(__x, __y, GetPlayerX, GetPlayerY) + 10 * max(0.2, ((120 - __i) / 90)^5) * [1, -1][__i % 2]);
					yield;
				}
				
				loop(100) {
					Obj_SetSpeed(obj, Obj_GetSpeed(obj) + 0.02);
					yield;
				}
				
				wait(120);
				if(__i == n - 1) {
					isShot = 0;
				}
			}
		}
	}
}