#e
#Title[XeIOĂ݂]
#Text[Fs@  EF@      ㉺EVbg{F]      ᑬړFᑬ                  [U[`FfύX          bZ[WXLbvFI]
#Image[]
#BackGround[]
#BGM[]
#PlayLevel[]
#ScriptVersion[2]
#Player[FREE]

script_enemy_main
{
let px=GetCenterX;
let py=400;

	//GoɈxs镔
	@Initialize
	{
	//   eϐ

	//   XyJ[hf[^
	SetLife(700);
	SetScore(1);
	SetDamageRate(0,  0);
	SetTimer(65535);
	SetInvincibility(120);
	ForbidShot(true);
	ForbidBomb(true);
	MagicCircle(false);
	SetGraphicRect(64,1,127,64);
	LoadGraphic("script\img\ExRumia.png");
	}
	//   ʒu܂ňړ
	SetMovePosition02(GetCenterX, GetCenterY-80 , 60);
	
	AtackTask;
	KeyWatch;
	//G̃Ct0ɂȂ܂ŁA̕1t[1s
	@MainLoop
	{
		SetPlayerX(px);
		SetPlayerY(py);
		yield;
		SetCollisionA(GetX, GetY, 32);
		SetCollisionB(GetX, GetY, 24);
	}
	
	//`惋[vB1t[1s
	@DrawLoop
	{
		SetColor(255,255,255);
		SetTexture("script\img\ExRumia.png");
		DrawGraphic(GetX-120,GetY());
		DrawGraphic(GetX,GetY());
		DrawGraphic(GetX+120,GetY());
	}
		
	//GłuԂɈxs镔
	@Finalize
	{
		DeleteGraphic("script\img\ExRumia.png");
	}
	//XyJ[h̔wi
	//Ă悢
	@BackGround
	{
	}

	task AtackTask{
		wait(120);
		let delay=0;
		loop{
			//lʑ
			let size=60;
			let grf=GREEN01;
			let width=6;
			StereogramLaser(0,0,6^0.5/2*size,			3^0.5*2/3*size,0,-6^0.5/6*size,		width,grf,delay);
			StereogramLaser(0,0,6^0.5/2*size,			-3^0.5/3*size,size,-6^0.5/6*size,	width,grf,delay);
			StereogramLaser(0,0,6^0.5/2*size,			-3^0.5/3*size,-size,-6^0.5/6*size,	width,grf,delay);
			StereogramLaser(3^0.5*2/3*size,0,-6^0.5/6*size,		-3^0.5/3*size,size,-6^0.5/6*size,	width,grf,delay);
			StereogramLaser(-3^0.5/3*size,size,-6^0.5/6*size,	-3^0.5/3*size,-size,-6^0.5/6*size,	width,grf,delay);
			StereogramLaser(-3^0.5/3*size,-size,-6^0.5/6*size,	3^0.5*2/3*size,0,-6^0.5/6*size,		width,grf,delay);
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//Zʑ
			size=40;
			grf=YELLOW01;
			StereogramLaser(-size,-size,-size,	size,-size,-size,	width,grf,delay);
			StereogramLaser(size,-size,-size,	size,-size,size,	width,grf,delay);
			StereogramLaser(size,-size,size,	-size,-size,size,	width,grf,delay);
			StereogramLaser(-size,-size,size,	-size,-size,-size,	width,grf,delay);
			StereogramLaser(-size,-size,-size,	-size,size,-size,	width,grf,delay);
			StereogramLaser(size,-size,-size,	size,size,-size,	width,grf,delay);
			StereogramLaser(size,-size,size,	size,size,size,		width,grf,delay);
			StereogramLaser(-size,-size,size,	-size,size,size,	width,grf,delay);
			StereogramLaser(-size,size,-size,	size,size,-size,	width,grf,delay);
			StereogramLaser(size,size,-size,	size,size,size,		width,grf,delay);
			StereogramLaser(size,size,size,		-size,size,size,	width,grf,delay);
			StereogramLaser(-size,size,size,	-size,size,-size,	width,grf,delay);
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//ʑ
			size=60;
			grf=BLUE01;
			StereogramLaser(0,0,-size,		size,0,0,	width,grf,delay);
			StereogramLaser(0,0,-size,		-size,0,0,	width,grf,delay);
			StereogramLaser(0,0,-size,		0,size,0,	width,grf,delay);
			StereogramLaser(0,0,-size,		0,-size,0,	width,grf,delay);
			StereogramLaser(size,0,0,		0,size,0,	width,grf,delay);
			StereogramLaser(0,size,0,		-size,0,0,	width,grf,delay);
			StereogramLaser(-size,0,0,		0,-size,0,	width,grf,delay);
			StereogramLaser(0,-size,0,		size,0,0,	width,grf,delay);
			StereogramLaser(0,0,size,		size,0,0,	width,grf,delay);
			StereogramLaser(0,0,size,		-size,0,0,	width,grf,delay);
			StereogramLaser(0,0,size,		0,size,0,	width,grf,delay);
			StereogramLaser(0,0,size,		0,-size,0,	width,grf,delay);
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//[rbNL[u^iq
			size=40;
			grf=PURPLE01;
			width=2;
			StereogramLaser(-size,-size,-size,	size,-size,-size,	width,grf,delay);
			StereogramLaser(size,-size,-size,	size,-size,size,	width,grf,delay);
			StereogramLaser(size,-size,size,	-size,-size,size,	width,grf,delay);
			StereogramLaser(-size,-size,size,	-size,-size,-size,	width,grf,delay);
			StereogramLaser(-size,-size,-size,	-size,size,-size,	width,grf,delay);
			StereogramLaser(size,-size,-size,	size,size,-size,	width,grf,delay);
			StereogramLaser(size,-size,size,	size,size,size,		width,grf,delay);
			StereogramLaser(-size,-size,size,	-size,size,size,	width,grf,delay);
			StereogramLaser(-size,size,-size,	size,size,-size,	width,grf,delay);
			StereogramLaser(size,size,-size,	size,size,size,		width,grf,delay);
			StereogramLaser(size,size,size,		-size,size,size,	width,grf,delay);
			StereogramLaser(-size,size,size,	-size,size,-size,	width,grf,delay);

			StereogramLaser(-size,-size/3,-size,	size,-size/3,-size,	width,grf,delay);
			StereogramLaser(size,-size/3,-size,	size,-size/3,size,	width,grf,delay);
			StereogramLaser(size,-size/3,size,	-size,-size/3,size,	width,grf,delay);
			StereogramLaser(-size,-size/3,size,	-size,-size/3,-size,	width,grf,delay);
			StereogramLaser(-size/3,-size,-size,	-size/3,size,-size,	width,grf,delay);
			StereogramLaser(size/3,-size,-size,	size/3,size,-size,	width,grf,delay);
			StereogramLaser(size/3,-size,size,	size/3,size,size,	width,grf,delay);
			StereogramLaser(-size/3,-size,size,	-size/3,size,size,	width,grf,delay);
			StereogramLaser(-size,size/3,-size,	size,size/3,-size,	width,grf,delay);
			StereogramLaser(size,size/3,-size,	size,size/3,size,	width,grf,delay);
			StereogramLaser(size,size/3,size,	-size,size/3,size,	width,grf,delay);
			StereogramLaser(-size,size/3,size,	-size,size/3,-size,	width,grf,delay);

			StereogramLaser(-size,-size,-size/3,	size,-size,-size/3,	width,grf,delay);
			StereogramLaser(size/3,-size,-size,	size/3,-size,size,	width,grf,delay);
			StereogramLaser(size,-size,size/3,	-size,-size,size/3,	width,grf,delay);
			StereogramLaser(-size/3,-size,size,	-size/3,-size,-size,	width,grf,delay);
			StereogramLaser(-size,-size,-size/3,	-size,size,-size/3,	width,grf,delay);
			StereogramLaser(size,-size,-size/3,	size,size,-size/3,	width,grf,delay);
			StereogramLaser(size,-size,size/3,	size,size,size/3,	width,grf,delay);
			StereogramLaser(-size,-size,size/3,	-size,size,size/3,	width,grf,delay);
			StereogramLaser(-size,size,-size/3,	size,size,-size/3,	width,grf,delay);
			StereogramLaser(size/3,size,-size,	size/3,size,size,	width,grf,delay);
			StereogramLaser(size,size,size/3,	-size,size,size/3,	width,grf,delay);
			StereogramLaser(-size/3,size,size,	-size/3,size,-size,	width,grf,delay);

			StereogramLaser(-size,-size/3,-size/3,	size,-size/3,-size/3,	width,grf,delay);
			StereogramLaser(size/3,-size/3,-size,	size/3,-size/3,size,	width,grf,delay);
			StereogramLaser(size,-size/3,size/3,	-size,-size/3,size/3,	width,grf,delay);
			StereogramLaser(-size/3,-size/3,size,	-size/3,-size/3,-size,	width,grf,delay);
			StereogramLaser(-size/3,-size,-size/3,	-size/3,size,-size/3,	width,grf,delay);
			StereogramLaser(size/3,-size,-size/3,	size/3,size,-size/3,	width,grf,delay);
			StereogramLaser(size/3,-size,size/3,	size/3,size,size/3,	width,grf,delay);
			StereogramLaser(-size/3,-size,size/3,	-size/3,size,size/3,	width,grf,delay);
			StereogramLaser(-size,size/3,-size/3,	size,size/3,-size/3,	width,grf,delay);
			StereogramLaser(size/3,size/3,-size,	size/3,size/3,size,	width,grf,delay);
			StereogramLaser(size,size/3,size/3,	-size,size/3,size/3,	width,grf,delay);
			StereogramLaser(-size/3,size/3,size,	-size/3,size/3,-size,	width,grf,delay);

			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//EhuAgJbg
			grf=WHITE01;
			width=2;
			size=60;
			let dir=0;
			loop(8){
				StereogramLaser(cos(dir)*size,-size*0.26,sin(dir)*size,	cos(dir+22.5)*size,-size*0.26,sin(dir+22.5)*size,	width,grf,delay);
				StereogramLaser(cos(dir+22.5)*size,-size*0.26,sin(dir+22.5)*size,	cos(dir+45)*size,-size*0.26,sin(dir+45)*size,	width,grf,delay);
				StereogramLaser(cos(dir)*size,-size*0.26,sin(dir)*size,	cos(dir-22.5)*size/3,size*0.3,sin(dir-22.5)*size/3,	width,grf,delay);
				StereogramLaser(cos(dir)*size,-size*0.26,sin(dir)*size,	cos(dir+22.5)*size/3,size*0.3,sin(dir+22.5)*size/3,	width,grf,delay);
				StereogramLaser(cos(dir+22.5)*size,-size*0.26,sin(dir+22.5)*size,	0,size*0.6,0,	width,grf,delay);

				StereogramLaser(cos(dir)*size*0.55,-size*0.6,sin(dir)*size*0.55,	cos(dir+45)*size*0.55,-size*0.6,sin(dir+45)*size*0.55,	width,grf,delay);
				StereogramLaser(cos(dir)*size*0.55,-size*0.6,sin(dir)*size*0.55,	cos(dir-22.5)*size*0.7,-size*0.48,sin(dir-22.5)*size*0.65,	width,grf,delay);
				StereogramLaser(cos(dir)*size*0.55,-size*0.6,sin(dir)*size*0.55,	cos(dir+22.5)*size*0.7,-size*0.48,sin(dir+22.5)*size*0.65,	width,grf,delay);
				StereogramLaser(cos(dir)*size,-size*0.26,sin(dir)*size,	cos(dir-22.5)*size*0.7,-size*0.48,sin(dir-22.5)*size*0.65,	width,grf,delay);
				StereogramLaser(cos(dir)*size,-size*0.26,sin(dir)*size,	cos(dir+22.5)*size*0.7,-size*0.48,sin(dir+22.5)*size*0.65,	width,grf,delay);
				StereogramLaser(cos(dir+22.5)*size,-size*0.26,sin(dir+22.5)*size,	cos(dir+22.5)*size*0.7,-size*0.48,sin(dir+22.5)*size*0.65,	width,grf,delay);

				dir+=45;
			}
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//_hbg
			size=70;
			loop(64){
				let resq=Rotate3D_C(1,0,0,rand(0,360),rand(0,360),rand(0,360));
				grf=rand_int(RED05,ORANGE05);
				StereogramShot(resq[1]*rand(0,1)*size,resq[2]*rand(0,1)*size,resq[3]*rand(0,1)*size,grf,delay);
			}
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//_
			size=70;
			width=10;
			loop(24){
				let sq=Rotate3D_C(1,0,0,rand(0,360),rand(0,360),rand(0,360));
				let eq=Rotate3D_C(1,0,0,rand(0,360),rand(0,360),rand(0,360));
				grf=rand_int(RED21,ORANGE21);
				StereogramLaser(sq[1]*rand(0,1)*size,sq[2]*rand(0,1)*size,sq[3]*rand(0,1)*size,	eq[1]*rand(0,1)*size,eq[2]*rand(0,1)*size,eq[3]*rand(0,1)*size,	width,grf,delay);
			}
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//d
			size=20;
			let z=-70;
			dir=0;
			let ammo=50;
			let zspd=z*2/ammo;
			loop(ammo){
				StereogramShot(cos(dir)*size,sin(dir)*size,z,BLUE05,delay);
				StereogramShot(cos(dir+180)*size,sin(dir+180)*size,z,RED05,delay);
				dir+=20;
				z-=zspd;
			}
			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;

			//H
			size=60;
			let z=-70;
			let dir=0;
			let ammo=48;
			grf=AQUA05;
			loop(ammo){
				StereogramShot(cos(dir)*size,sin(dir)*size,0,grf,delay);
				dir+=360/ammo;
			}
			ammo=24;
			size=28;
			loop(ammo){
				StereogramShot(cos(dir)*size,sin(dir)*0.85*size-20,0,grf,delay);
				dir+=360/ammo;
			}
			let x=cos(dir)*size;
			let y=sin(dir)*0.85*size-20;
			loop(7){
				y+=6;
				StereogramShot(x,y,0,grf,delay);
			}
			loop(ammo/2){
				StereogramShot(cos(dir)*size,sin(dir)*0.85*size+20,0,grf,delay);
				dir+=360/ammo;
			}

			while(GetKeyState(VK_USER)!=KEY_PUSH){yield;}
			DeleteEnemyShot(ALL);
			yield;


		}
	}

let rotq=[];

	task KeyWatch{
		let rot=0;
		loop{
			if(GetKeyState(VK_SKIP)==KEY_PUSH){
				VanishEnemy;
			}

			rot=2.5;
			if(GetKeyState(VK_SLOWMOVE)==KEY_HOLD){
				rot=1;
			}
			let xkey=0;
			if(GetKeyState(VK_UP)==KEY_HOLD){
				xkey=1;
			}
			else if(GetKeyState(VK_DOWN)==KEY_HOLD){
				xkey=-1;
			}
			let ykey=0;
			if(GetKeyState(VK_LEFT)==KEY_HOLD){
				ykey=-1;
			}
			else if(GetKeyState(VK_RIGHT)==KEY_HOLD){
				ykey=1;
			}
			let zkey=0;
			if(GetKeyState(VK_SHOT)==KEY_HOLD){
				zkey=-1;
			}
			else if(GetKeyState(VK_BOMB)==KEY_HOLD){
				zkey=1;
			}
			rotq=MakeRotate(xkey*rot,ykey*rot,zkey*rot);
			yield;
		}
	}
	task StereogramLaser(	//XeIOȃ[U[
		sx,
		sy,
		sz,
		ex,
		ey,
		ez,
		width,
		grf,
		delay
	){
		let objl=Obj_Create(OBJ_LASER);
		let objc=Obj_Create(OBJ_LASER);
		let objr=Obj_Create(OBJ_LASER);
		ObjShot_SetGraphic(objl, grf);
		ObjShot_SetGraphic(objc, grf);
		ObjShot_SetGraphic(objr, grf);
		ObjShot_SetDelay(objl, delay);
		ObjShot_SetDelay(objc, delay);
		ObjShot_SetDelay(objr, delay);
		Obj_SetAutoDelete(objl,false);
		Obj_SetAutoDelete(objc,false);
		Obj_SetAutoDelete(objr,false);
		Obj_SetCollisionToPlayer(objl,false);
		Obj_SetCollisionToPlayer(objc,false);
		Obj_SetCollisionToPlayer(objr,false);
		ObjLaser_SetSource(objl,false);
		ObjLaser_SetSource(objc,false);
		ObjLaser_SetSource(objr,false);
		ObjLaser_SetWidth(objl,width);
		ObjLaser_SetWidth(objc,width);
		ObjLaser_SetWidth(objr,width);
		let dis=300;
		let gapq=MakeRotate(0,6,0);
		let resq=Rotate3D_A(sx,sy,sz,gapq);
		let ssx=resq[1];
		let ssy=resq[2];
		let ssz=resq[3];
		resq=Rotate3D_A(ex,ey,ez,gapq);
		let sex=resq[1];
		let sey=resq[2];
		let sez=resq[3];

		while(!Obj_BeDeleted(objl)||!Obj_BeDeleted(objc)||!Obj_BeDeleted(objr)){
			let psx=Perspective(sx,sz,dis);
			let psy=Perspective(sy,sz,dis);
			let pssx=Perspective(ssx,ssz,dis);
			let pssy=Perspective(ssy,ssz,dis);
			Obj_SetPosition(objl,pssx-120+GetX,pssy+GetY+100);
			Obj_SetPosition(objc,psx+GetX,psy+GetY+100);
			Obj_SetPosition(objr,pssx+120+GetX,pssy+GetY+100);
			let pex=Perspective(ex,ez,dis);
			let pey=Perspective(ey,ez,dis);
			let psex=Perspective(sex,sez,dis);
			let psey=Perspective(sey,sez,dis);
			let ldis=Distance(psx,psy,pex,pey);
			ObjLaser_SetLength(objc,ldis);
			Obj_SetAngle(objc,atan2(pey-psy,pex-psx));
			ldis=Distance(pssx,pssy,psex,psey);
			ObjLaser_SetLength(objl,ldis);
			Obj_SetAngle(objl,atan2(psey-pssy,psex-pssx));
			ObjLaser_SetLength(objr,ldis);
			Obj_SetAngle(objr,atan2(psey-pssy,psex-pssx));

			yield;


			resq=Rotate3D_A(sx,sy,sz,rotq);
			sx=resq[1];
			sy=resq[2];
			sz=resq[3];
			resq=Rotate3D_A(ex,ey,ez,rotq);
			ex=resq[1];
			ey=resq[2];
			ez=resq[3];
			resq=Rotate3D_A(sx,sy,sz,gapq);
			ssx=resq[1];
			ssy=resq[2];
			ssz=resq[3];
			resq=Rotate3D_A(ex,ey,ez,gapq);
			sex=resq[1];
			sey=resq[2];
			sez=resq[3];
		}
	}

	task StereogramShot(	//XeIOȒe
		x,
		y,
		z,
		grf,
		delay
	){
		let objl=Obj_Create(OBJ_SHOT);
		let objc=Obj_Create(OBJ_SHOT);
		let objr=Obj_Create(OBJ_SHOT);
		ObjShot_SetGraphic(objl, grf);
		ObjShot_SetGraphic(objc, grf);
		ObjShot_SetGraphic(objr, grf);
		ObjShot_SetDelay(objl, delay);
		ObjShot_SetDelay(objc, delay);
		ObjShot_SetDelay(objr, delay);
		Obj_SetAutoDelete(objl,false);
		Obj_SetAutoDelete(objc,false);
		Obj_SetAutoDelete(objr,false);
		Obj_SetCollisionToPlayer(objl,false);
		Obj_SetCollisionToPlayer(objc,false);
		Obj_SetCollisionToPlayer(objr,false);
		let dis=300;
		let gapq=MakeRotate(0,6,0);

		let resq=Rotate3D_A(x,y,z,gapq);
		let sx=resq[1];
		let sy=resq[2];
		let sz=resq[3];

		while(!Obj_BeDeleted(objl)||!Obj_BeDeleted(objr)){
			Obj_SetPosition(objl,Perspective(sx,z,dis)-120+GetX,Perspective(sy,z,dis)+GetY+100);
			Obj_SetPosition(objc,Perspective(x,z,dis)+GetX,Perspective(y,z,dis)+GetY+100);
			Obj_SetPosition(objr,Perspective(sx,z,dis)+120+GetX,Perspective(sy,z,dis)+GetY+100);

			yield;

			resq=Rotate3D_A(x,y,z,rotq);
			x=resq[1];
			y=resq[2];
			z=resq[3];
			resq=Rotate3D_A(x,y,z,gapq);
			sx=resq[1];
			sy=resq[2];
			sz=resq[3];
		}
	}

	function wait(n){
		loop(n){yield;}
	}
	function Distance(xa,ya,xb,yb){
			return(((xa-xb)^2+(ya-yb)^2)^0.5);
	}
	#include_function".\rotate3d.dnh"
}
