task Atack(){
	let angle = 0;
	let rangle = 1;
	let speed = speedlist[0];
	let wtime = wtimelist[0];
	let luna = 0;
	
	loop{
		if( GetLife() < 250 || GetTimer() < 20 ){
			luna = 3;
		}else if( GetLife() < 500 ){
			luna = 2;
		}else if( GetLife() < 700 ){
			luna = 1;
		}else{
			luna = 0;
		}
		
		speed = speedlist[luna];
		wtime = wtimelist[luna];
		
		angle = rand(0,360);
		
		SuperString(GetX(),GetY(),speed,angle      ,radvalue,rollvalue * rangle);
		SuperString(GetX(),GetY(),speed,angle + 180,radvalue,rollvalue * rangle);
		
		rangle *= -1;
		
		Wait(wtime);
	}
}

task SuperString(x,y,speed,angle,prad,roll){
	let vx = x;
	let vy = y;
	let rad = 0;
	let sangle = rand(0,360);
	let count = 0;
	
	loop( stringtimevalue ){
		StringShot(vx,vy,speed,sangle - angle,40,20,(stringtimevalue - count) * 2 + 30);
		
		rad += prad;
		angle += roll;
		count += 1;
		
		vx = x + rad * cos(angle);
		vy = y + rad * sin(angle);
		
		yield;
	}
}

task StringShot(x,y,speed,angle,graph,delay,stop){
	let nspeed = 0;
	let obj = CreateObjShot(x,y,0,angle,graph,delay);
	
	Wait(stop);
	
	while( !Obj_BeDeleted(obj) ){
		if( nspeed < speed ){
			nspeed += 0.03;
			Obj_SetSpeed(obj,nspeed);
		}
		
		yield;
	}
}

task HPCheck(){
	while( GetLife() > 1 ){
		yield;
	}
	
	SetPlayerInvincibility(3600);
}