とりあえずどうすればできるようになるかを書いていきます。
マイクロスレッドとObj弾の使用が必須です。
////////////////////////////////////////////////////////////////////////////////////////
///////////////////スペル作成の部////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
SpellCardフォルダに作成します。
script_enemy_mainのすぐ後に

let Norma=6;//撮影枚数の設定
let SpellTimer=9000;//制限時間の設定（フレーム単位）
let StepUp=[1,2,3,4,5];//段階移行する枚数を設定（五つまで設定可能）。
//StepUp1〜9（boolean）まであり、初期はfalse。入力枚数撮るとtrueになる
#include_function ".\..\txt/data.txt"

を入れます。上二つは説明する必要もありませんから三つ目について。
必ずしも9つ入れる必要はなく
let StepUp=[2,4];
でもＯＫ。六つ以上いれなければ良い。
以下具体的な例（いい例というわけではないです）

let StepUp=[2,4];	
let way=20;
task step
{
	while(!StepUp1){yield;}//2枚とるまで繰り返す
	way=22;
	while(!StepUp2){yield;}//4枚とるまで繰り返す
	way=24;
}

@Initializeで以下の２行を追加
InitializeDoubleSpoiler;
DrawSpellName(画像へのパス、左、上、右、下);//必ずしも入れる必要はない、
メリットは撮影時に一瞬消えるとか

@Finalizeで以下の一行を追加
FinalizeDoubleSpoiler;

任意のタイミングで追加するもの
MagicCircleEffectTask;//指定タイミングでNiceShot用魔方陣を出します。


弾について
雛形おいておきます
loop(w){yield;}を使う場合はwait(w)で使ってください。
またwhile内などに使うyieldにもwait(1)を使ってください。
task DSCreateShot01(let x,let y,let speed,let angle,let graphic,let delay)
{
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj, x, y);
	ObjShot_SetGraphic(obj, graphic);
	Obj_SetSpeed(obj, speed);
	Obj_SetAngle(obj, angle);
	ObjShot_SetDelay(obj, delay);
	Obj_SetAutoDelete(obj,false);

	let X;//弾の座標を毎フレーム記録するための値
	let Y;
	let VanishJudg=false;//削除領域で消えたかどうかを判断するための値
	
	while(!Obj_BeDeleted(obj))
	{
		wait(1);

		X=Obj_GetX(obj);//毎フレーム記録
		Y=Obj_GetY(obj);
		
		if(Obj_GetX(obj)<GetClipMinX-128)//左端での挙動
		{
			Obj_Delete(obj);
			VanishJudg=true;
        	}
		if(Obj_GetX(obj)>GetClipMaxX+128)//右端での挙動
		{
			Obj_Delete(obj);
			VanishJudg=true;
        	}
		if(Obj_GetY(obj)<GetClipMinY-128)//上端での挙動
		{
			Obj_Delete(obj);
			VanishJudg=true;
        	}
		if(Obj_GetY(obj)>GetClipMaxY+128)//下端での挙動
		{
			Obj_Delete(obj);
			VanishJudg=true;
        	}
	}
	if(VanishJudg==false)//削除領域で消えてない（カメラで消えた）
	{
		if(DistanceToPlayer(X,Y)<=50)
		{
			RiskShot(80);//リスクショットになる半径とスコア
		}
		if(DistanceToBoss(X,Y)<=50)
		{
			ClearShot;//クリアショットになる半径
		}

		BasePoint(80);//ベースポイント設定。
		//スピードを毎フレーム記録すればそれを含めたスコアにすることも可能

		BulletColor("RED");
		//色を設定する設定できる色は
		//"RED","ORANGE","BLUE","YELLOW","GREEN",PURPLE","CYAN","WHITE"の８種
		但しOrangeShotとWhiteShotはなくRainbowShotに関係するだけです
	}
}

////////////////////////////////////////////////////////////////////////////////////////
///////////////////スペル導入の部////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
txtフォルダ内のSpellCardFileを開き
SpellCardScScript[num]にスペルへのパスを入力して下さい。
[num]内の数値は１１〜９９で３４ならばLevel３のScene４です。
Scene1から埋める必要はないのですが、そうしたほうが見た目がいいでしょう。

////////////////////////////////////////////////////////////////////////////////////////
///////////////////ノルマ設定の部////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
txtフォルダ内のLevelNormaを開き
FlagLevelNum[num]にノルマ枚数を入れてください。
[num]内の数値は設定するレベルです。
////////////////////////////////////////////////////////////////////////////////////////
///////////////////コメント設定の部////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
txtフォルダ内のTopicを開き
TopicAya[num]orTopicHatate[num]にコメントを入れてください。
[num]内の数値は設定するシーンです。