#e
#Title[z͂̕ςȂuv]
#ScriptVersion[2]
#Player[FREE]
#Text[ГƎ̉S@\𓋍]

script_enemy_main
{
let GC=GetCurrentScriptDirectory;

let EX0=0;
let EY0=0;
let EX1=0;
let EY1=0;
let EX2=0;
let EY2=0;
let pat=0;

@Initialize
{
SetX(GetCenterX);
SetY(GetClipMinY);
LoadGraphic(GC~".\main.png");
SetTexture(GC~".\main.png");
SetGraphicRect(0,0,32,40);
PlayMusic("bgm\gj.mp3");
SetTimer(99);
SetLife(5000);
SetDamageRate(0,0);
CutIn(YOUMU,"z͂̕ςȂuv",GC~"cut_in.png",0,0,0,0);
SetScore(100000);
CreateEnemyFromScript("yukari",GetX,GetY,0,0,0);
//CreateDebugWindow;
Tmain;
}

@MainLoop
{
alternative(pat)
case(0){SetCollisionA(EX0,EY0,0);}
case(1){SetCollisionA(EX1,EY1,0);}
others{SetCollisionA(EX2,EY2,0);}
SetMovePosition02(EX0,EY0,1);
yield;
}

@DrawLoop
{
DrawGraphic(GetCommonDataDefault("EX0",0),GetCommonDataDefault("EY0",0));
}
@Finalize
{
SetX(EX0);
SetY(EY0);
AddScore(10000);
loop(30){CreateItem(ITEM_SCORE,GetX+rand(-50,50),GetY+rand(-30,30));};
CreateItem(ITEM_1UP,GetX+rand(-50,50),GetY+rand(-30,30));
CreateItem(ITEM_BOMB,GetX+rand(-50,50),GetY+rand(-30,30));
}

task Tmain
{
yield;
Tsukima;
Tmove;
loop{yield;}
}

task Tmove
{
loop
	{
	EX0=GetCommonDataDefault("EX0",0);
	EY0=GetCommonDataDefault("EY0",0);
	let dis0=GetCommonDataDefault("dis0",0);
	EX1=GetCommonDataDefault("EX1",0);
	EY1=GetCommonDataDefault("EY1",0);
	let dis1=GetCommonDataDefault("dis1",400);
	EX2=GetCommonDataDefault("EX2",0);
	EY2=GetCommonDataDefault("EY2",0);
	let dis2=GetCommonDataDefault("dis2",500);
	if(dis0>dis1){pat=1;}
	else if(dis0>dis2){pat=2;}
	else{pat=0;}
	let life0=GetCommonDataDefault("life0",10000);
	AddLife(life0-GetLife);
	yield;
	}
}

task Tsukima
{
let height=0;
LoadGraphic(GC~ ".\sukima.png");
let sukima=Obj_Create(OBJ_EFFECT);
ObjEffect_SetTexture(sukima,GC~ ".\sukima.png");
ObjEffect_SetPrimitiveType(sukima,PRIMITIVE_TRIANGLEFAN);
ObjEffect_CreateVertex(sukima,10);
ObjEffect_SetVertexXY(sukima,0,0,0);
ObjEffect_SetVertexXY(sukima,1,-20+0*10,-10*sin(0*180/4));
ObjEffect_SetVertexXY(sukima,2,-20+1*10,-10*sin(1*180/4));
ObjEffect_SetVertexXY(sukima,3,-20+2*10,-10*sin(2*180/4));
ObjEffect_SetVertexXY(sukima,4,-20+3*10,-10*sin(3*180/4));
ObjEffect_SetVertexXY(sukima,5,-20+4*10,-10*sin(4*180/4));
ObjEffect_SetVertexXY(sukima,6,-20+3*10,-10*sin(5*180/4));
ObjEffect_SetVertexXY(sukima,7,-20+2*10,-10*sin(6*180/4));
ObjEffect_SetVertexXY(sukima,8,-20+1*10,-10*sin(7*180/4));
ObjEffect_SetVertexXY(sukima,9,-20+0*10,-10*sin(8*180/4));
ObjEffect_SetVertexUV(sukima,0,height,height);
ObjEffect_SetVertexUV(sukima,1,height-20+0*10,height-10*sin(0*180/4));
ObjEffect_SetVertexUV(sukima,2,height-20+1*10,height-10*sin(1*180/4));
ObjEffect_SetVertexUV(sukima,3,height-20+2*10,height-10*sin(2*180/4));
ObjEffect_SetVertexUV(sukima,4,height-20+3*10,height-10*sin(3*180/4));
ObjEffect_SetVertexUV(sukima,5,height-20+4*10,height-10*sin(4*180/4));
ObjEffect_SetVertexUV(sukima,6,height-20+3*10,height-10*sin(5*180/4));
ObjEffect_SetVertexUV(sukima,7,height-20+2*10,height-10*sin(6*180/4));
ObjEffect_SetVertexUV(sukima,8,height-20+1*10,height-10*sin(7*180/4));
ObjEffect_SetVertexUV(sukima,9,height-20+0*10,height-10*sin(8*180/4));
ObjEffect_SetLayer(sukima,1);

let frame=Obj_Create(OBJ_EFFECT);
LoadGraphic(GC~ ".\frame.png");
ObjEffect_SetTexture(frame,GC~ ".\frame.png");
ObjEffect_SetPrimitiveType(frame,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_CreateVertex(frame,4);
ObjEffect_SetVertexXY(frame,0,-30,-20);
ObjEffect_SetVertexXY(frame,1,30,-20);
ObjEffect_SetVertexXY(frame,2,-30,20);
ObjEffect_SetVertexXY(frame,3,30,20);
ObjEffect_SetVertexUV(frame,0,0,0);
ObjEffect_SetVertexUV(frame,1,60,0);
ObjEffect_SetVertexUV(frame,2,0,40);
ObjEffect_SetVertexUV(frame,3,60,40);
ObjEffect_SetLayer(frame,1);
loop
	{
	Obj_SetPosition(sukima,EX0,EY0+3);
	Obj_SetPosition(frame,EX0,EY0+3);
	height=height+0.5;
	ObjEffect_SetVertexUV(sukima,0,height,height);
	ObjEffect_SetVertexUV(sukima,1,height-20+0*10,height-10*sin(0*180/4));
	ObjEffect_SetVertexUV(sukima,2,height-20+1*10,height-10*sin(1*180/4));	
	ObjEffect_SetVertexUV(sukima,3,height-20+2*10,height-10*sin(2*180/4));
	ObjEffect_SetVertexUV(sukima,4,height-20+3*10,height-10*sin(3*180/4));
	ObjEffect_SetVertexUV(sukima,5,height-20+4*10,height-10*sin(4*180/4));
	ObjEffect_SetVertexUV(sukima,6,height-20+3*10,height-10*sin(5*180/4));
	ObjEffect_SetVertexUV(sukima,7,height-20+2*10,height-10*sin(6*180/4));
	ObjEffect_SetVertexUV(sukima,8,height-20+1*10,height-10*sin(7*180/4));
	ObjEffect_SetVertexUV(sukima,9,height-20+0*10,height-10*sin(8*180/4));
	yield;
	}
}

}

script_enemy yukari
{
let GC=GetCurrentScriptDirectory;
@Initialize
{
LoadGraphic(GC~".\main.png");
SetTexture(GC~".\main.png");
SetGraphicRect(0,0,0,0);
SetLife(5000);
Tmain;
}
@MainLoop
{
SetCollisionA(GetX,GetY,12);
yield;
}
@DrawLoop
{
DrawGraphic(GetX,GetY);
}
@Finalize
{
SetCommonData("life0",0);
AddScore(3000);
}

task Tmain
{
yield;
Tmove;
SetMovePosition03(GetCenterX,GetCenterY-30,15,4);
loop(80){yield};
CreateEnemyFromScript("ran",GetX,GetY,0,0,0);
CreateEnemyFromScript("chen",GetX,GetY,0,0,0);
Tdyson;
let sangle=0;
let left=1;
loop
	{
	SetMovePosition03(GetCenterX+rand(-60,60),GetCenterY-30+rand(-60,60),15,3.5);
	loop(60){yield};
	Concentration01(60);
	loop(60){yield};
	Tattack(sangle,left);
	sangle=(sangle+120)%360;
	left=left*-1;
	loop(80){yield};	
	}
VanishEnemy;
}

task Tmove
{
loop
	{
	SetCommonData("EX0",GetX);
	SetCommonData("EY0",GetY);
	SetCommonData("dis0",GetDistanceToPlayer);
	SetCommonData("life0",GetLife);
	loop(1){yield};
	}
}

task Tdyson
{
loop
	{
	SetPlayerX(GetPlayerX+0.5*cos(GetAngleToPlayer+180));
	SetPlayerY(GetPlayerY+0.5*sin(GetAngleToPlayer+180));
	yield;
	}
}

task Tattack(sangle,left)
{
let WX1=GetX;
let WY1=GetY;
let WX2=GetX;
let WY2=GetY;
let WX3=GetX;
let WY3=GetY;
let WX4=GetX;
let WY4=GetY;
let disb=20;
let time=100;
loop(15)
	{
	WX1=WX1+disb*cos(sangle);
	WY1=WY1+disb*sin(sangle);
	WX2=WX2+disb*cos(sangle+180);
	WY2=WY2+disb*sin(sangle+180);
	Tdust(WX1,WY1,time,sangle+90,3,PURPLE21,10);
	Tdust(WX1,WY1,time,sangle-90,3,PURPLE21,10);
	Tdust(WX2,WY2,time,sangle+90,3,PURPLE21,10);
	Tdust(WX2,WY2,time,sangle-90,3,PURPLE21,10);
	WX3=WX3+disb*cos(sangle+90);
	WY3=WY3+disb*sin(sangle+90);
	WX4=WX4+disb*cos(sangle+270);
	WY4=WY4+disb*sin(sangle+270);
	Tdust(WX3,WY3,time,sangle,3,PURPLE21,10);
	Tdust(WX3,WY3,time,sangle+180,3,PURPLE21,10);
	Tdust(WX4,WY4,time,sangle,3,PURPLE21,10);
	Tdust(WX4,WY4,time,sangle+180,3,PURPLE21,10);
	sangle=sangle+8*left;
	time=time-2;
	loop(2){yield};
	}
loop(15)
	{
	WX1=WX1+disb*cos(sangle);
	WY1=WY1+disb*sin(sangle);
	WX2=WX2+disb*cos(sangle+180);
	WY2=WY2+disb*sin(sangle+180);
	Tdust(WX1,WY1,time,sangle+90,3,PURPLE21,10);
	Tdust(WX1,WY1,time,sangle-90,3,PURPLE21,10);
	Tdust(WX2,WY2,time,sangle+90,3,PURPLE21,10);
	Tdust(WX2,WY2,time,sangle-90,3,PURPLE21,10);
	WX3=WX3+disb*cos(sangle+90);
	WY3=WY3+disb*sin(sangle+90);
	WX4=WX4+disb*cos(sangle+270);
	WY4=WY4+disb*sin(sangle+270);
	Tdust(WX3,WY3,time,sangle,3,PURPLE21,10);
	Tdust(WX3,WY3,time,sangle+180,3,PURPLE21,10);
	Tdust(WX4,WY4,time,sangle,3,PURPLE21,10);
	Tdust(WX4,WY4,time,sangle+180,3,PURPLE21,10);
	sangle=sangle-8*left;
	time=time-2;
	loop(2){yield};
	}
}

task Tdust(WX,WY,time,angle,speed,type,delay)
{
let dust=CreateShot01(WX+5*cos(angle),WY+5*sin(angle),0,angle,type,delay);
if(absolute(GetPlayerX-WX)<10&&absolute(GetPlayerY-WY)<12){Obj_Delete(dust)};
let rad=500;
while(Obj_BeDeleted(dust)==false && rad>5&&time>0)
	{
	let dyson=atan2(GetY-Obj_GetY(dust),GetX-Obj_GetX(dust));
	rad=((GetX-Obj_GetX(dust))^2+(GetY-Obj_GetY(dust))^2)^0.5;
	Obj_SetPosition(dust,Obj_GetX(dust)+(500-rad)/600*cos(dyson),Obj_GetY(dust)+(500-rad)/600*sin(dyson));
	time=time-1;
	yield;
	}
while(Obj_BeDeleted(dust)==false && rad>5)
	{
	let dyson=atan2(GetY-Obj_GetY(dust),GetX-Obj_GetX(dust));
	rad=((GetX-Obj_GetX(dust))^2+(GetY-Obj_GetY(dust))^2)^0.5;
	Obj_SetPosition(dust,Obj_GetX(dust)+(500-rad)/600*cos(dyson),Obj_GetY(dust)+(500-rad)/600*sin(dyson));
	if(Obj_GetSpeed(dust)<speed){Obj_SetSpeed(dust,Obj_GetSpeed(dust)+speed/80)};
	yield;
	}
Obj_Delete(dust);
}

function GetDistanceToPlayer
{
let d=((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2)^0.5;
return(d);
}

}

script_enemy ran
{
let GC=GetCurrentScriptDirectory;
let EX0=0;
let EY0=0;
let pangle=0;
@Initialize
{
LoadGraphic(GC~".\bit.png");
SetTexture(GC~".\bit.png");
SetGraphicRect(0,0,31,31);
SetLife(10000);
SetDamageRate(0,0);
Tmain;
}
@MainLoop
{
SetCollisionA(GetX,GetY,12);
yield;
}
@DrawLoop
{
SetGraphicAngle(0,0,pangle);
DrawGraphic(GetX,GetY);
pangle=(pangle-25)%360;
}
@Finalize
{
AddScore(3000);
}

task Tmain
{
yield;
Tmove;
let angle=0;
let rad=180;
SetMovePosition02(GetCenterX+rad*0.75*cos(angle),GetCenterY-30+rad*sin(angle),60);
loop(80){yield};
Tattack;
let left=-0.5;
loop
	{
	loop(170)
		{
		SetMovePosition02(GetCenterX+rad*0.75*cos(angle),GetCenterY-30+rad*sin(angle),1);
		angle=(angle+1.5)%360;
		rad=rad+left;
		loop(1){yield};
		}
	left=left*-1;
	}
VanishEnemy;
}

task Tattack
{
loop
	{
	let angle=0;
	let way=12;
	loop(12)
		{
		Tdust(3,GetAngleToPlayer+angle-7.5,-0.025,0,BLUE23,5);
		Tdust(4.5,GetAngleToPlayer+angle+7.5,-0.05,0,BLUE23,5);
		angle=angle+360/12;
		}
	loop(50){yield};
	}
}

task Tmove
{
loop
	{
	EX0=GetCommonDataDefault("EX0",GetEnemyX);
	EY0=GetCommonDataDefault("EY0",GetEnemyY);
	SetCommonData("EX1",GetX);
	SetCommonData("EY1",GetY);
	SetCommonData("dis1",GetDistanceToPlayer);
	loop(1){yield};
	}
}

task Tdust(speed,angle,dspeed,mspeed,type,delay)
{
let dust=CreateShot02(GetX,GetY,speed,angle,dspeed,mspeed,type,delay);
let rad=500;
while(Obj_BeDeleted(dust)==false && rad>5)
	{
	let dyson=atan2(EY0-Obj_GetY(dust),EX0-Obj_GetX(dust));
	rad=((EX0-Obj_GetX(dust))^2+(EY0-Obj_GetY(dust))^2)^0.5;
	Obj_SetPosition(dust,Obj_GetX(dust)+(500-rad)/300*cos(dyson),Obj_GetY(dust)+(500-rad)/300*sin(dyson));
	yield;
	}
Obj_Delete(dust);
}

function GetDistanceToPlayer
{
let d=((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2)^0.5;
return(d);
}

}

script_enemy chen
{
let GC=GetCurrentScriptDirectory;
let EX0=0;
let EY0=0;
let pangle=0;
@Initialize
{
LoadGraphic(GC~".\bit.png");
SetTexture(GC~".\bit.png");
SetGraphicRect(32,0,64,32);
SetLife(10000);
SetDamageRate(0,0);
Tmain;
}
@MainLoop
{
SetCollisionA(GetX,GetY,12);
yield;
}
@DrawLoop
{
SetGraphicAngle(0,0,pangle);
DrawGraphic(GetX,GetY);
pangle=(pangle+25)%360;
}
@Finalize
{
AddScore(3000);
}

task Tmain
{
yield;
Tmove;
let angle=180;
let rad=180;
SetMovePosition02(GetCenterX+rad*0.75*cos(angle),GetCenterY-30+rad*sin(angle),60);
loop(80){yield};
Tattack;
let left=-0.5;
loop
	{
	loop(170)
		{
		SetMovePosition02(GetCenterX+rad*0.75*cos(angle),GetCenterY-30+rad*sin(angle),1);
		angle=(angle+1.5)%360;
		rad=rad+left;
		loop(1){yield};
		}
	left=left*-1;
	}
VanishEnemy;
}

task Tattack
{
loop
	{
	let angle=0;
	let way=12;
	loop(12)
		{
		Tdust(3,GetAngleToPlayer+angle-7.5,-0.025,0,ORANGE23,5);
		Tdust(4.5,GetAngleToPlayer+angle+7.5,-0.05,0,ORANGE23,5);
		angle=angle+360/12;
		}
	loop(50){yield};
	}
}

task Tmove
{
loop
	{
	EX0=GetCommonDataDefault("EX0",GetEnemyX);
	EY0=GetCommonDataDefault("EY0",GetEnemyY);
	SetCommonData("EX2",GetX);
	SetCommonData("EY2",GetY);
	SetCommonData("dis2",GetDistanceToPlayer);
	loop(1){yield};
	}
}

task Tdust(speed,angle,dspeed,mspeed,type,delay)
{
let dust=CreateShot02(GetX,GetY,speed,angle,dspeed,mspeed,type,delay);
let rad=500;
while(Obj_BeDeleted(dust)==false && rad>5)
	{
	let dyson=atan2(EY0-Obj_GetY(dust),EX0-Obj_GetX(dust));
	rad=((EX0-Obj_GetX(dust))^2+(EY0-Obj_GetY(dust))^2)^0.5;
	Obj_SetPosition(dust,Obj_GetX(dust)+(500-rad)/300*cos(dyson),Obj_GetY(dust)+(500-rad)/300*sin(dyson));
	yield;
	}
Obj_Delete(dust);
}

function GetDistanceToPlayer
{
let d=((GetX-GetPlayerX)^2+(GetY-GetPlayerY)^2)^0.5;
return(d);
}

}

