    let FamiliarX=[];
    let FamiliarY=[];
    let FamiliarShotAngle=[];
    let FamiliarAngle=[];
    let eyes = 0;

task TShot{
	let delay=4;
	let secount=0;
	let bShotPrev = false;
        let left = 1;    // Vbg{^𗣂łoc̉

        loop {
	if(bShot && !bSlow&& !OnEvent && !OnBomb){
		ascent(n in -1..2){Danmaq(GetPlayerX()+(n*12), GetPlayerY()-24,10, 270, 1, 6, 1);}
	}
	if(bShot && (bSlow || OnBomb) && !OnEvent){
		ascent(n in -1..2){Danmaq(GetPlayerX()+(n*12), GetPlayerY()-24,10, 270, 1, 6, 1);}
	}
            if(! bShot) {
               
                if(left == 0) {
                    while(! bShot) { yield; }
                } else {
	  }
	}
	bShotPrev = bShot;
	loop(delay){yield;}
        }
    }

task TSubShot{
	let delay=3;
	let secount=0;
	let MShotAngle=[-90-10,-90+5,-90,-90-5,-90+10,];

        loop {
            while(! bShot || !FireFlag) { yield; }
            
		if(!OnMissed && !OnEvent && !OnBomb){
                	if(bSlow) {
			if(secount>=22){
				secount=0;
				}
			if(envyType == 0){
				if(secount%11 == 0 && eyes < 4){
				greenEye(secount%2);
				}
				delay = 12;
			}
			if(envyType == 1){
				if(secount%11 == 0){
				Burst(StarX[secount%2], StarY[secount%2], 6, 270+rand(-10,10), 1+(nights/7), 1, 7);
				}
				delay = 2;
			}
				secount++;		
				}       
                	if(! bSlow) {
			if(envyType == 0){
				delay = 12;
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 270, 1, 6, 1);
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 255, 1, 6, 1);
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 240, 1, 6, 1);
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 225, 1, 6, 1);
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 285, 1, 6, 1);
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 300, 1, 6, 1);
				Danmaq(GetPlayerX(), GetPlayerY()-24, 6, 315, 1, 6, 1);
			}
			if(envyType == 1){
				delay = 4;
				ascent(n in -1..2){Danmaq(GetPlayerX+12+(n*12),GetPlayerY-24,10,270,0.3,6,1);}
				ascent(n in -1..2){Danmaq(GetPlayerX-12+(n*12), GetPlayerY-24,10,270,0.3,6,1);}
			}

		}
			}
            loop(delay){yield;}
        }
    }


task Danmaq(let x,let y,let speed,let angle,let damage,let penetlate,let stype){
	let objShot= Obj_Create(OBJ_SHOT);
	Obj_SetX(objShot, x);
	Obj_SetY(objShot, y);
	Obj_SetAlpha(objShot,255); 
        	ObjShot_SetGraphic(objShot, stype);
	ObjShot_SetDamage(objShot, damage);    
	ObjShot_SetPenetration(objShot, penetlate);
	Obj_SetAngle(objShot, angle);
	Obj_SetSpeed(objShot,speed);
	while( !Obj_BeDeleted(objShot)){
		yield;
		}
	Obj_Delete(objShot);
	}
task Hurt(let x,let y,let speed,let angle,let life, let damage,let penetlate,let stype){
	let objShot= Obj_Create(OBJ_SHOT);
	Obj_SetX(objShot, x);
	Obj_SetY(objShot, y);
	Obj_SetAlpha(objShot,255); 
        	ObjShot_SetGraphic(objShot, stype);
	ObjShot_SetDamage(objShot, damage);    
	ObjShot_SetPenetration(objShot, penetlate);
	Obj_SetAngle(objShot, angle);
	Obj_SetSpeed(objShot,speed);
	let lifetime = 0;
	while( !Obj_BeDeleted(objShot)){
		lifetime++;
		Obj_SetSpeed(objShot, Obj_GetSpeed(objShot)*0.9);
		if (lifetime>=life){Obj_Delete(objShot);}
		yield;
		}
	Obj_Delete(objShot);
	}
task Burst(let x,let y,let speed,let angle,let damage,let penetlate,let stype){
	let objShot= Obj_Create(OBJ_SHOT);
	Obj_SetX(objShot, x);
	Obj_SetY(objShot, y);
	Obj_SetAlpha(objShot,255); 
        	ObjShot_SetGraphic(objShot, stype);
	ObjShot_SetDamage(objShot, damage);    
	ObjShot_SetPenetration(objShot, penetlate);
	Obj_SetAngle(objShot, angle);
	Obj_SetSpeed(objShot,speed);
	while( !Obj_BeDeleted(objShot)){
		x=Obj_GetX(objShot);
		y=Obj_GetY(objShot);
		yield;
		}
	ascent(n in 0..6){
		Hurt(x, y,rand(8,10)-n, rand(-180,180), 30, 0.15, 666, 3);
		Hurt(x, y,rand(9,11)-n, rand(-180,180), 30, 0.2, 666, 8);
		Hurt(x, y,rand(6,8)-n, rand(-180,180), 30, 0.1, 666, 9);}
	Obj_Delete(objShot);
	}
task greenEye(let start){
		eyes++;
		let greenEyed = Obj_Create(OBJ_SHOT);
		Obj_SetX(greenEyed, StarX[start]);
		Obj_SetY(greenEyed, StarY[start]);
		Obj_SetSpeed(greenEyed, 4);
		Obj_SetAlpha(greenEyed,500); 
		ObjShot_SetGraphic(greenEyed, 2);
		ObjShot_SetDamage(greenEyed,1);
		if(IsBossExisting){ObjShot_SetDamage(greenEyed,3);}
		ObjShot_SetPenetration(greenEyed, 30);
		let life = 0;
		while(!Obj_BeDeleted(greenEyed)){
			let angle=atan2(GetEnemyY()-Obj_GetY(greenEyed), GetEnemyX()-Obj_GetX(greenEyed));	
			Obj_SetAngle(greenEyed, angle);
			if (life %6 == 0){
				let rx1 = rand(-12,12);
				let ry1 = rand(-12,12);
				let rx2 = rand(0,12);
				let ry2 = rand(0,12);
				Trail(Obj_GetX(greenEyed)+rx1+rx2,Obj_GetY(greenEyed)+ry1+ry2,200,angle,3,1,3);
				Trail(Obj_GetX(greenEyed)+rx1-rx2,Obj_GetY(greenEyed)+ry1-ry2,200,angle,3,1,3);
				Trail(Obj_GetX(greenEyed)+rx1,Obj_GetY(greenEyed)+ry1,200,angle,3,1,4);
			}
			life++;
			if (OnEvent){Obj_Delete(greenEyed);}
			yield;
		}
		eyes--;
		Obj_Delete(greenEyed);
	}

task Trail(let x,let y,let life,let angle,let damage,let penetlate,let stype){
	let objShot= Obj_Create(OBJ_SHOT);
	Obj_SetX(objShot, x);
	Obj_SetY(objShot, y);
	Obj_SetAlpha(objShot,255); 
        	ObjShot_SetGraphic(objShot, stype);
	ObjShot_SetDamage(objShot, damage+(nights/7));
	if(IsBossExisting){ObjShot_SetDamage(objShot,damage*2+(nights/7));}
	ObjShot_SetPenetration(objShot, penetlate);
	Obj_SetAngle(objShot, angle);
	Obj_SetSpeed(objShot,0);
	loop(life){
		yield;}
	Obj_Delete(objShot);
	}
