script_spell Satelites{

   let imgEffect = GetArgument[0];
   let sun;

    @Initialize {
        SetPlayerInvincibility(310);
	TMain;
	
    }

    @Finalize {
	
    }

    @MainLoop {
        yield;

    }

 task TMain {
    let state = false;

	let secount = 0;
	PlaySE("seBomb_MarisaA.wav");
	loop(300){
		secount++;
		let an = atan2(GetEnemyY - GetPlayerY, GetEnemyX - GetPlayerX);
		if(secount % 60 == 0){Ashes(GetPlayerX, GetPlayerY, 3, an, 2, 6, 999, 7, 300-secount);}
		if(secount % 100 == 0){Boom(GetPlayerX, GetPlayerY, 3, an, 2, 18, 3, 3);}
		yield;
	}
	End;
    }
	task Blossom(let obj, life){
	let x = Obj_GetX(obj)+rand(-20,20);
	let y = Obj_GetY(obj)+rand(-20,20);
	let angle = Obj_GetAngle(obj);
		Bloom(x,y,angle,2,16,5, life);
		Bloom(x,y,angle+72,2,16,5, life);
		Bloom(x,y,angle-72,2,16,5, life);
		Bloom(x,y,angle+144,2,16,5, life);
		Bloom(x,y,angle-144,2,16,5, life);
	}
	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 Sprout(let x,let y,let speed,let angle,let damage,let penetlate,let stype, life){
		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 second = 0;
		while( !Obj_BeDeleted(objShot)){
			second++;
			if (second % 10 == 0){
				Blossom(objShot, life-second);}
			yield;
			}
		Obj_Delete(objShot);
	}
	task Boom(let x,let y, let speed, let angle, let damage, let range, let penetrate, let stype){
		ascent(n in 0..range){
			Danmaq(x,y,speed,angle + n*(360/range),damage,penetrate,stype);
		}
	}
	task Ashes(let x,let y, let speed, let angle, let damage, let range, let penetrate, let stype, let life){
		ascent(n in 0..range){
			Sprout(x,y,speed,angle + n*(360/range),damage,penetrate,stype, life);
		}
	}
	task Bloom(let x,let y,let angle,let damage,let penetlate,let stype, let life){
	let objShot= Obj_Create(OBJ_SHOT);
	Obj_SetX(objShot, x);
	Obj_SetY(objShot, y);
	Obj_SetAlpha(objShot,250); 
        	ObjShot_SetGraphic(objShot, stype);
	ObjShot_SetDamage(objShot, damage);    
	ObjShot_SetPenetration(objShot, penetlate);
	Obj_SetAngle(objShot, angle);
	Obj_SetSpeed(objShot,0);
	let count = 0;
	while( !Obj_BeDeleted(objShot)){
		count++;
		if (count >= life || count >= 100){Obj_Delete(objShot);}
		yield;
		}
	Obj_Delete(objShot);
	}
}