
let pl00 = GetCurrentScriptDirectory()~"./img/pl_shot.png";
let ShotHit=0;
LoadTexture(pl00);
/*

e摜goreĺupl_shot.pngvꕔEHĂ؂肢܂B


EȈՐ
pl00_MainShot()
@@ݒsvBVbg^XNɒułB

pl00_SubShot01(px,py,ang)
@@z[~OBXWAYWъpx̐ݒ肪KvB

pl00_SubShot02(px,py)
@@__łƓ悤ȋ̔ˊ֐Bpx270xŒB
@@@XWAYW̐ݒ肪KvB1̊֐2{˂B

*/
//----------------------------------------------------------------------------//
//CVbg(p[̏㏸ƋɈЗ͒ቺ)
//----------------------------------------------------------------------------//
task pl00_MainShot(){
	pl00_MainShot_([GetPlayerX-10,GetPlayerY+12]);
	pl00_MainShot_([GetPlayerX+10,GetPlayerY+12]);
}
task pl00_MainShot_(pos){
	let obj		= ObjPrim_Create(OBJ_SPRITE_2D);
	let dmg		= 20;
	let objMainShot = CreatePlayerShotA1(pos[0],pos[1],24,270,dmg,65535,100);//ObjShot_Create(OBJ_SHOT);

	let AnimRect	= [144,160,176];
	let HitRect	= [  0, 16, 32, 48];
	let HitRect2	= [ 16, 32, 48, 64];
	let ShotAnim	= 0;
	let AnimCount	= 0;
	let alpha	= 0;
	if(GetPlayerPower>=0  ){dmg = 22.5;}
	if(GetPlayerPower>=100){dmg = 17.5;}
	if(GetPlayerPower>=200){dmg = 15;}
	if(GetPlayerPower>=300){dmg = 12.5;}
	if(GetPlayerPower>=400){dmg = 10;}
	//ObjMove_SetX(objMainShot, pos[0]);//xWݒ
	//ObjMove_SetY(objMainShot, pos[1]);//yWݒ;
	//ObjMove_SetSpeed(objMainShot, 24);//xݒ
	//ObjMove_SetAngle(objMainShot, 270);
	//ObjShot_SetGraphic(objMainShot, 1);//摜ݒ
	ObjShot_SetDamage(objMainShot, dmg);//_[Wݒ
	//ObjShot_SetPenetration(objMainShot, 100000);//ђʗ͓͂Kɑ傫

	ObjPrim_SetTexture(obj, pl00);
	ObjRender_SetPosition(obj,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot)+22,0);
	ObjRender_SetBlendType(obj, BLEND_ALPHA);
	Obj_SetRenderPriority(obj, 0.45);
	ObjRender_SetAlpha(obj,alpha);
	ObjRender_SetAngleXYZ(obj,0,0,-90);
	ObjSprite2D_SetSourceRect(obj,192,AnimRect[ShotAnim],256,AnimRect[ShotAnim+1]);
	ObjSprite2D_SetDestCenter(obj);
	//ObjShot_Regist(objMainShot);
	while( !Obj_IsDeleted(objMainShot) ){
	ObjRender_SetAlpha(objMainShot,0);
	ObjShot_SetIntersectionCircleA2(objMainShot,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot),8);
		ShotAnim++;ShotAnim%=2;
		ObjRender_SetPosition(obj,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot)+22,0);
		ObjSprite2D_SetSourceRect(obj,192,AnimRect[ShotAnim],256,AnimRect[ShotAnim+1]);
		if(ObjCol_IsIntersected(objMainShot)){
			ShotHit=1;
			ObjShot_SetIntersectionEnable(objMainShot,false);
			ShotAnim=0;
			ObjRender_SetScaleXYZ(obj,1.25,1.25,0);
			loop(8){
			ObjRender_SetBlendType(obj, BLEND_ADD_ARGB);
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,0,144,16,160);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			loop(7){
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,16,144,32,160);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			loop(6){
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,32,144,48,160);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			loop(9){
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,48,144,64,160);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			Obj_Delete(objMainShot);
			Obj_Delete(obj);
		return;
		}
		yield;
		alpha=160;
		ObjRender_SetAlpha(obj,alpha);
	}
	Obj_Delete(obj);
	Obj_Delete(objMainShot);
}

//----------------------------------------------------------------------------//
//@z[~O(З͂͌Œ)
//----------------------------------------------------------------------------//

task pl00_SubShot01(px,py,ang){
	pl00_SubShot_01([px,py],ang);
}
task pl00_SubShot_01(pos,ang){
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);

	let objMainShot = ObjShot_Create(OBJ_SHOT);

	let AnimRect=[0,64,128,160,64,128];
	let HitRect =[  0, 16, 32, 48];
	let HitRect2=[ 16, 32, 48, 64];
	let ShotAnim=0;
	let AnimCount=0;
	let alpha=0;

	let dmg = 0;

	if(GetPlayerPower>=0  ){dmg = 22;}
	if(GetPlayerPower>=100){dmg = 16;}
	if(GetPlayerPower>=200){dmg = 16;}
	if(GetPlayerPower>=300){dmg = 16;}
	if(GetPlayerPower>=400){dmg = 16;}

	let EnemyObjectArray=GetIntersectionRegistedEnemyID;
	let Dis=1000000;
	let nearObj;

	let angv=0.1;
	let sp=4;
	let acc=0;

	let h_count=60;

	let R=255;
	let G=255;
	let B=255;
	let c_count=h_count;
	ObjMove_SetX(objMainShot, pos[0]);//xWݒ
	ObjMove_SetY(objMainShot, pos[1]);//yWݒ;
	ObjMove_SetSpeed(objMainShot, sp+acc);//xݒ
	ObjMove_SetAngle(objMainShot, ang);
	ObjShot_SetGraphic(objMainShot, 100);//摜ݒ
	ObjShot_SetDamage(objMainShot, dmg);//_[Wݒ
	ObjShot_SetPenetration(objMainShot, 100000);//ђʗ͓͂Kɑ傫

	ObjPrim_SetTexture(obj, pl00);
	ObjRender_SetPosition(obj,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot),0);
	ObjRender_SetBlendType(obj, BLEND_ALPHA);
	Obj_SetRenderPriority(obj, 0.45);
	ObjRender_SetAlpha(obj,alpha);
	ObjRender_SetColor(obj,R,G,B);
	ObjRender_SetAngleXYZ(obj,0,0,ang-90);
	ObjSprite2D_SetSourceRect(obj,64,160,80,176);
	ObjSprite2D_SetDestCenter(obj);
	ObjShot_Regist(objMainShot);
	while( !Obj_IsDeleted(objMainShot) ){
	ObjShot_SetIntersectionCircleA2(objMainShot,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot),8);
	ObjMove_SetSpeed(objMainShot, sp+acc);
		acc+=0.05;
		ShotAnim+=2;ShotAnim%=4;
		ObjRender_SetPosition(obj,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot),0);
		HomingTask;
		//ObjMove_SetAngle(obj,ObjMove_GetAngle(objMainShot)-90);
		ObjRender_SetAngleZ(obj,ObjMove_GetAngle(objMainShot));
		if(ObjCol_IsIntersected(objMainShot)){
			ShotHit=1;
			ObjSprite2D_SetSourceRect(obj,80,160,96,176);
			ObjShot_SetIntersectionEnable(objMainShot,false);
			loop(8){
			ObjRender_SetBlendType(obj, BLEND_ADD_ARGB);
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,80,160,96,176);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			loop(7){
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,96,160,112,176);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			loop(6){
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,112,160,128,176);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			loop(9){
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*2,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*2,0);
			ObjSprite2D_SetSourceRect(obj,496,196,512,512);
			ObjSprite2D_SetDestCenter(obj);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/42;
			yield;
			}
			Obj_Delete(objMainShot);
			Obj_Delete(obj);
		return;
		}

		yield;
	alpha=128;
	ObjRender_SetAlpha(obj,alpha);
	if(ObjRender_GetX(obj)<=-32&&ObjRender_GetX(obj)>=416&&ObjRender_GetY(obj)<=-32&&ObjRender_GetY(obj)>=480){Obj_Delete(objMainShot);Obj_Delete(obj);break;}
	}
	Obj_Delete(obj);
	Obj_Delete(objMainShot);
	task HomingTask{
	ascent(i in 0..length(EnemyObjectArray)){
	let dis=(ObjRender_GetY(EnemyObjectArray[i])-GetPlayerY)^2+(ObjRender_GetX(EnemyObjectArray[i])-GetPlayerX)^2;
		if(dis < Dis ){
			Dis=dis;
		nearObj=EnemyObjectArray[i];
		}
	}
	if(length(EnemyObjectArray)>0){
		h_count--;
		let ToPlayerAngle=atan2(ObjRender_GetY(nearObj)-ObjRender_GetY(objMainShot),ObjRender_GetX(nearObj)-ObjRender_GetX(objMainShot));
			let sinvalue=sin(ObjMove_GetAngle(objMainShot)-ToPlayerAngle);
			if(ObjRender_GetX(nearObj)>=-32&&ObjRender_GetX(nearObj)<=416&&ObjRender_GetY(nearObj)>=-32&&ObjRender_GetY(nearObj)<=512){
				G-=255/c_count;B-=255/c_count;
				ObjRender_SetColor(obj,R,G,B);
				if(h_count>0){angv+=0.05;}
				//ColorRed+=0.05;
				if(sinvalue>0){
							if(sinvalue<=sin(10)){
								ObjMove_SetAngle(objMainShot,ToPlayerAngle);
							}else{
						ObjMove_SetAngle(objMainShot,ObjMove_GetAngle(objMainShot)-angv);
							}
				}else{
						if(sinvalue>sin(-10)){
						ObjMove_SetAngle(objMainShot,ToPlayerAngle);
				}else{
						ObjMove_SetAngle(objMainShot,ObjMove_GetAngle(objMainShot)+angv);
					}
				}
			}
			//ObjMove_SetAngle(objMainShot,ToPlayerAngle);
		if(length(GetEnemyIntersectionPosition(nearObj,ObjRender_GetX(nearObj),ObjRender_GetY(nearObj)))==0){
			break;
			}
		}
	}
}
//----------------------------------------------------------------------------//
//@ᑬj
//----------------------------------------------------------------------------//
task pl00_SubShot02(px,py){
	pl00_SubShot_02([px+5,py]);
	pl00_SubShot_02([px-5,py]);
}
task pl00_SubShot_02(pos){
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);

	let objMainShot = ObjShot_Create(OBJ_SHOT);
	let dmg=0;
	let AnimRect=[0,64,128,160,64,128];
	let HitRect =[  0, 16, 32, 48];
	let HitRect2=[ 16, 32, 48, 64];
	let ShotAnim=0;
	let AnimCount=0;
	let alpha=0;
	if(GetPlayerPower>=0  ){dmg = 4;}
	if(GetPlayerPower>=100){dmg = 4;}
	if(GetPlayerPower>=200){dmg = 4;}
	if(GetPlayerPower>=300){dmg = 4;}
	if(GetPlayerPower>=400){dmg = 4;}
	ObjMove_SetX(objMainShot, pos[0]+1);//xWݒ
	ObjMove_SetY(objMainShot, pos[1]);//yWݒ;
	ObjMove_SetSpeed(objMainShot, 24);//xݒ
	ObjMove_SetAngle(objMainShot, 270);
	ObjShot_SetGraphic(objMainShot, 100);//摜ݒ
	ObjShot_SetDamage(objMainShot, dmg);//_[Wݒ
	ObjShot_SetPenetration(objMainShot, 100000);//ђʗ͓͂Kɑ傫

	ObjPrim_SetTexture(obj, pl00);
	ObjRender_SetPosition(obj,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot),0);
	ObjRender_SetBlendType(obj, BLEND_ADD_ARGB);
	Obj_SetRenderPriority(obj, 0.45);
	ObjRender_SetAlpha(obj,alpha);
	ObjRender_SetAngleXYZ(obj,0,0,-90);
	ObjSprite2D_SetSourceRect(obj,AnimRect[ShotAnim],176,AnimRect[ShotAnim+1],192);
	ObjSprite2D_SetDestCenter(obj);
	ObjShot_Regist(objMainShot);
	while( !Obj_IsDeleted(objMainShot) ){
	ObjShot_SetIntersectionCircleA2(objMainShot,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot)-24,8);
		ShotAnim+=2;ShotAnim%=4;
		ObjSprite2D_SetSourceRect(obj,AnimRect[ShotAnim],176,AnimRect[ShotAnim+1],192);
		ObjRender_SetPosition(obj,ObjMove_GetX(objMainShot),ObjMove_GetY(objMainShot),0);
		if(ObjCol_IsIntersected(objMainShot)){
			ShotHit=1;
			ObjSprite2D_SetSourceRect(obj,64,176,128,192);
			ObjShot_SetIntersectionEnable(objMainShot,false);
			ShotAnim=0;
			ObjRender_SetAngleXYZ(obj,0,0,rand(-80,-100));
			loop(60){
			ObjRender_SetBlendType(obj, BLEND_ADD_ARGB);
			ObjRender_SetPosition(obj,ObjRender_GetX(obj)+cos(ObjRender_GetAngleZ(obj))*1.5,ObjRender_GetY(obj)+sin(ObjRender_GetAngleZ(obj))*1.5,0);
			ObjRender_SetAlpha(obj,alpha);
			alpha-=255/45;
			yield;
			}
			Obj_Delete(objMainShot);
			Obj_Delete(obj);
		return;
		}
		yield;
	alpha=128;
	ObjRender_SetAlpha(obj,alpha);
	}
	Obj_Delete(obj);
	Obj_Delete(objMainShot);
}