//ShotObj

LoadPlayerShotData(current~".\txt\ShotData.txt");

let ShotType=0;
task MainShot{
	alternative(ShotType)//ؑ
	case(0){ThreeWay;}
	case(1){ShotGun;}
	case(2){Auto;}
	case(3){Shell;}
	case(4){Laser;}
	if(ShotType==5){ShotType=0;}
	yield;
}

task ThreeWay{//X[EFC
	if(counter%5==0){
		ShotObj(GetPlayerX, GetPlayerY-10,15,270,1,2,200);
		ShotObj(GetPlayerX-15, GetPlayerY-10,15,240,2,2,200);
		ShotObj(GetPlayerX+15, GetPlayerY-10,15,300,2,2,200);
		PlaySE(SE[1]);
	}
}

let ag = 0;
task ShotGun{//VbgK
	if(counter%20==0){
		ag =200;
		loop(8){
			ShotObj(GetPlayerX, GetPlayerY-5,20,ag,3,5,20);
			ag+=20;
		}
		PlaySE(SE[2]);
	}
}

task Auto{//}VK
	if(counter%2==0){
		ShotObj(GetPlayerX-15, GetPlayerY-5,25,270,4,4,100);
		ShotObj(GetPlayerX+15, GetPlayerY-5,25,270,4,4,100);
		PlaySE(SE[0]);
	}
}

task Shell{//VF
	if(counter%8==0){
		ShotObj(GetPlayerX, GetPlayerY-5,20,270,5,10,100);
		PlaySE(SE[3]);
	}
}
task Laser{//[U[
	LaserObj(GetPlayerX-12, GetPlayerY-2,150,270,6,1,5);
	LaserObj(GetPlayerX+12, GetPlayerY-2,150,270,6,1,5);
	if(counter%20==0){
		PlaySE(SE[6]);
	}
}

task SideShot{
	alternative(ShotType)
	case(0){DoubleAuto;}
	case(1){SuperShell;}
	case(2){TwinLaser;}
	if(ShotType==3){ShotType=0;}
}

task DoubleAuto{
	if(counter%2==0){
		ShotObj(GetPlayerX-35, GetPlayerY-3,25,270,4,4,100);
		ShotObj(GetPlayerX+35, GetPlayerY-3,25,270,4,4,100);
		ShotObj(GetPlayerX-55, GetPlayerY-3,25,270,4,4,100);
		ShotObj(GetPlayerX+55, GetPlayerY-3,25,270,4,4,100);
		PlaySE(SE[0]);
	}
}

task SuperShell{
	if(counter%8==0){
		ShotObj(GetPlayerX+45, GetPlayerY-5,20,270,5,10,100);
		ShotObj(GetPlayerX-45, GetPlayerY-5,20,270,5,10,100);
		PlaySE(SE[3]);
	}
}

task TwinLaser{
	LaserObj(GetPlayerX-35, GetPlayerY-3,120,270,7,1.5,5);
	LaserObj(GetPlayerX+35, GetPlayerY-3,120,270,7,1.5,5);
	LaserObj(GetPlayerX-55, GetPlayerY-3,120,270,7,1.5,5);
	LaserObj(GetPlayerX+55, GetPlayerY-3,120,270,7,1.5,5);
	if(counter%25==0){
		PlaySE(SE[6]);
	}
}

task ShotObj(ShotX,ShotY,Speed,Angle,Bullet,Damage,ShotSec){
	let Shot = Obj_Create(OBJ_SHOT);
	Obj_SetX(Shot,ShotX);
	Obj_SetY(Shot,ShotY);
	Obj_SetSpeed(Shot,Speed);
	Obj_SetAngle(Shot,Angle);
	ObjShot_SetGraphic(Shot,Bullet);
	ObjShot_SetDamage(Shot,Damage);
	ObjShot_SetPenetration(Shot,5);
	loop(ShotSec){
		if(ShotSec<80){
			DeleteEnemyShotToItemInCircle(SHOT,Obj_GetX(Shot),Obj_GetY(Shot),15);
		}
		yield;
	}
	Obj_Delete(Shot);
	yield;
}

task LaserObj(LaserX,LaserY,Width,Angle,Bullet,Damage,LaserSec){
	let Laser = Obj_Create(OBJ_LASER);
	Obj_SetX(Laser,LaserX);
	Obj_SetY(Laser,LaserY);
	ObjLaser_SetWidth(Laser,Width);
	ObjLaser_SetLength(Laser,600);
	ObjLaser_SetSource(Laser,false);
	Obj_SetAngle(Laser,Angle);
	ObjShot_SetGraphic(Laser,Bullet);
	ObjShot_SetDamage(Laser,Damage);
	ObjShot_SetPenetration(Laser,5);
	loop(LaserSec){yield;}
	Obj_Delete(Laser);
	yield;
}
