/**
 * カウントダウン
 * 
 * @param {String} sedir SEファイルの場所
 */
task CountDown( sedir ){
	let count = 9;
	
	loop{
		if( count == GetTimer() ){
			PlaySE( sedir );
			count -= 1;
		}
		yield;
	}
}

/**
 * 当たり判定登録+ボムバリア
 * 
 * @param {Integer} hita        弾に対する当たり判定
 * @param {Integer} hitb        自機に対する当たり判定
 * @param {Boolean} bombbarrier ボムバリアの可否
 * @param {Integer} hitwait     当たり判定登録までの待ち時間
 */
task SetCollisionEx( hita, hitb, bombbarrier, hitwait ){
	let cnt = 0;
	
	loop{
		if( !( OnBomb() && bombbarrier ) && cnt >= hitwait ){
			SetCollisionA( GetX(), GetY(), hita );
		}
		
		SetCollisionB( GetX(), GetY(), hitb );
		
		cnt += 1;
		
		yield;
	}
}

/**
 * CreateItem拡張
 * 
 * @param {Integer} type 種類
 * @param {Integer} rnd  ぶれ範囲
 * @param {Integer} num  落とす個数
 */
function CreateItemEx( type, rnd, num ){
	let rrad = 0;
	let rang = 0;
	let bx = 0;
	let by = 0;
	
	loop( num ){
		rrad = rand( 0, rnd );
		rang = rand( 0, 360 );
		bx = GetX() + cos( rang ) * rrad;
		by = GetY() + sin( rang ) * rrad;
		CreateItem( type, bx, by );
	}
}