・概要

 「セイバー」は、ゼロの主要な近接攻撃のことを指す。

↓各種セイバー

 セイバーモーションの処理の基本的な流れは、以下の通りとなる。
「セイバー発動の条件」が満たされた場合、「セイバーモーションの判定」に、該当するセイバーの情報が代入される。また、「セイバーモーションの時間の最大値」が該当するセイバーの値に設定される
・セイバーモーション開始。
セイバーモーション中は、「セイバーモーションの時間のカウント」が増加する
「セイバーモーションの時間のカウント」が、「セイバーモーションの時間の最大値」となった場合、セイバーモーションが終了する。また、「セイバーモーションの判定」や「セイバーモーションの時間のカウント」などがリセットされる。

 セイバー本体の処理に関しては、セイバーを参照。
 EXセイバーに関しては、EXセイバー発動などを参照。
 バスターと同様の処理に関しては、バスター発射を参照。

 ここでは、チップやEXセイバー関連の記述を、部分的に省略している。

・loadの処理

・・セイバーのMCの付加

 予め、セイバーのMCを、ゼロのMCの内部に出現させておく(ただし、「セイバーモーションの判定」は「なし」のため、表示されない)。

ASのファイル:zero_load.txt
 
_parent.attachMovie("zero_saber","zero_saber",_root.depth_zero_saber)	//セイバーのMCを出現させる
zero_saber_AA=_parent.zero_saber.zero_saber_AA	//参照先を変数に保存
zero_saber_hitrect=_parent.zero_saber.zero_saber_hitrect	//参照先を変数に保存
 

・・セイバーの先行入力

 「・セイバーの先行入力」を参照。

ASのファイル:zero_load.txt
 
count_time_buffer_keydown_new_saber	//セイバーの先行入力の判定用のカウント
count_time_buffer_keydown_new_saber_allowable=4	//セイバーの先行入力のカウントの許容範囲
count_time_buffer_keydown_new_saber=count_time_buffer_keydown_new_saber_allowable+1	//セイバーの先行入力の判定用のカウント(初期値)
buffer_keydown_new_saber=0	//セイバーの先行入力の判定
 

・・セイバーモーションの判定

 「セイバーモーションの判定」には、「"none"」(なし)、「"normal_1"」(通常状態のセイバー(一段目))、「"walk"」(歩きセイバー)などの情報が代入される。

ASのファイル:zero_load.txt
 
_root.zero_saber="none"	//セイバーモーションの判定
 

・・セイバーモーションの時間

 セイバーモーション中は、時間がカウントされる。また、それぞれのセイバーモーションには、時間の最大値が設定されている

ASのファイル:zero_load.txt
 
_root.count_zero_saber_time=0	//セイバーモーションの時間のカウント
_root.count_zero_saber_time_max	//セイバーモーションの時間の最大値(normal_1=18,normal_2=24,normal_3=32,normal_3_upper=24,walk=18,jump=19,wall_slide=18,dash=20,ladder=24,ex_rising_slash=21,ex_falling_thrust=9,ex_jump_rolling_slash=23,ex_sonic_slash=20,ex_saber_dash_thrust=20,charge=26)
 

・・下入れセイバー

 「・セイバーモーション(非チャージセイバー)」の「・・下入れセイバー」を参照。

ASのファイル:zero_load.txt
 
_root.zero_saber_jump_down=0	//下入れセイバーの判定
 

・セイバーモーション(全般)

 セイバーモーションは、「ゼロのAA」「ゼロのセイバーのAA」「ゼロのセイバーのhitrect」という3つのMCのモーションにより構成されている

 ここでは、歩きセイバーを例にする。

↓歩きセイバー。「ゼロのAA」のみを表示。

↓歩きセイバー。「ゼロのAA」「ゼロのセイバーのAA」を表示。

↓歩きセイバー。「ゼロのAA」「ゼロのセイバーのAA」「ゼロのセイバーhitrect」を表示。実際のゲーム画面では、「ゼロのセイバーのhitrect」は非表示にしている。

・セイバーモーション(非チャージセイバー)

・・概要

 「セイバーモーションの判定」がある場合には、セイバーモーションを行う
 「セイバーモーションの判定」の付加に関しては、「・セイバー発動の条件」を参照。

・・歩きセイバー

 ここでは、記述が簡易である、「歩きセイバー」を例にする。

 歩きセイバーに関する記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
else if(_root.zero_action=="walk"){
	if(_root.zero_saber=="walk"){_parent.zero_AA.gotoAndStop(["zero_AA_saber_"+_root.zero_saber]);zero_saber_AA.gotoAndStop(["zero_saber_AA_"+_root.zero_saber]);zero_saber_hitrect.gotoAndStop(["zero_saber_hitrect_"+_root.zero_saber])}	//歩きセイバー
}
 

 ここで、「gotoAndStop([])」内の「_root.zero_saber」を「"walk"」に置き換えると、上記の記述は、以下の通りとなる。

ASのファイル:なし
 
else if(_root.zero_action=="walk"){
	if(_root.zero_saber=="walk"){_parent.zero_AA.gotoAndStop("zero_AA_saber_walk");zero_saber_AA.gotoAndStop("zero_saber_AA_walk");zero_saber_hitrect.gotoAndStop("zero_saber_hitrect_walk")}	//歩きセイバー
}
 
・「else if(_root.zero_action=="walk")」:「ゼロのアクションの状態」が「歩き」の場合。
・「if(_root.zero_saber=="walk")」:「セイバーモーションの判定」が「歩き」の場合。
・「_parent.zero_AA.gotoAndStop("zero_AA_saber_walk")」:「ゼロのAA」を、「歩きセイバーのAA」が表示されるフレームにする。
・「zero_saber_AA.gotoAndStop("zero_saber_AA_walk")」:「ゼロのセイバーのAA」を、「歩きセイバーのAA」が表示されるフレームにする。
・「zero_saber_hitrect.gotoAndStop("zero_saber_hitrect_walk")」:「ゼロのセイバーのhitrect」を、「歩きセイバーのhitrect」が表示されるフレームにする。

 通常状態(一段目、二段目…)、ジャンプ(ジャンプセイバー)、ダッシュ(ダッシュセイバー)などにおいても、同様の記述をしている。

・・ジャンプセイバーから壁ずり落ちセイバーへの移行

 「壁ずり落ちセイバー」は、「ジャンプセイバー」から移行する場合がある(部分的に原作準拠)。そのため、「gotoAndStop(_root.count_zero_saber_time)」のように、フレームを指定する必要がある。このように指定しないと、壁ずり落ちセイバーのモーションが最初からになる

↓ジャンプセイバーから壁ずり落ちセイバーへの移行。移行したフレームにおいて、各種の値が変化する。

 記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
		_parent.zero_AA["zero_AA_saber_"+_root.zero_saber].gotoAndStop(_root.count_zero_saber_time);zero_saber_AA["zero_saber_AA_"+_root.zero_saber].gotoAndStop(_root.count_zero_saber_time);zero_saber_hitrect.zero_saber_hitrect_synthesis.gotoAndStop(_root.count_zero_saber_time)	//フレームを指定する(ジャンプセイバーから壁ずり落ちセイバーへの移行に対応するため)
 

 ジャンプセイバーから壁ずり落ちセイバーへの移行に関する記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
	else if(_root.zero_saber=="jump" and _root.count_zero_saber_time<=18){	//ジャンプセイバーから壁ずり落ちセイバーへの移行
		_root.zero_saber="wall_slide"
		_root.count_zero_saber_time_max=18
	}
 
・「_root.zero_saber=="jump"」:「セイバーモーション」の判定が「ジャンプセイバー」。
・「_root.count_zero_saber_time<=18」:「セイバーモーションの時間のカウント」が、「セイバーモーションの時間の最大値(壁ずり落ちセイバー)」以下の場合。ジャンプセイバーと壁ずり落ちセイバーの「セイバーモーションの時間の最大値」が異なる(ジャンプセイバーのほうが大きい)ため、このような記述をしている。
・「_root.zero_saber="wall_slide"」:「セイバーモーション」の判定を「壁ずり落ちセイバー」にする。
・「_root.count_zero_saber_time_max=18」:「セイバーモーションの時間の最大値」を、「壁ずり落ちセイバー」の値にする。

・・下入れセイバー

 「ジャンプ下入れセイバー」(以下、「下入れセイバー」)(俗称)に関する解説は、参考サイト(https://w.atwiki.jp/rockmanzero2ch/pages/156.html#id_41d255db)に丸投げ。
 「他のセイバーからの移行」は、別の箇所で解説する。

↓下入れセイバー。各種のMCのモーションが特定のフレームでストップする。

ASのファイル:zero_saber.txt
 
		if((keydown_down==1 and _root.count_zero_saber_time==12) or _root.zero_saber_jump_down==2){	//下キーの入力がある場合・カウントが特定の値の場合,他のセイバーから移行した場合
			_parent.zero_AA["zero_AA_saber_"+_root.zero_saber].gotoAndStop(12);zero_saber_AA["zero_saber_AA_"+_root.zero_saber].gotoAndStop(12);zero_saber_hitrect.zero_saber_hitrect_synthesis.gotoAndStop(12)
			_root.count_zero_saber_time--	//カウントを減少させる
			_root.zero_saber_jump_down=1	//下入れセイバーの判定
		}
 
・「keydown_down==1 and _root.count_zero_saber_time==12」:下キーの入力がある、かつ、「セイバーモーションの時間のカウント」が特定の値となっている
・「_parent.zero_AA["zero_AA_saber_"+_root.zero_saber].gotoAndStop(12)」:「ゼロのAA」の「ジャンプセイバーのAA」のフレームを特定の値に指定する。この処理により、モーションがストップする。他のMCも同様。
・「_root.count_zero_saber_time--」:カウントを減少させる。この処理により、実質的に、カウントがストップすることになる。
・「_root.zero_saber_jump_down=1」:下入れセイバーの判定を付加する。

・セイバーモーション(チャージセイバー)

・・概要

 チャージセイバーのセイバーモーションは、基本的にはキャンセルできない(ほぼ原作準拠)ので、セイバーモーションは「アクションの移行」に対応させる必要がある。

・・ジャンプ開始・壁蹴り以外

・・・概要

 基本的には、「_root.zero_action」と「_root.zero_saber」が一致している場合はそのまま、一致していない場合は変更してチャージセイバーのモーションを継続する

 前提となる条件に関する記述は、以下の通りとなる。これは、ゼロが特定の「アクションの状態」であり、「セイバーのモーションの判定」が、各種のチャージセイバーとなっている場合、という条件である。

ASのファイル:zero_saber.txt
 
if(_root.zero_action=="normal" or _root.zero_action=="jump" or _root.zero_action=="wall_slide" or _root.zero_action=="ladder"){	//通常状態,ジャンプ,壁ずり落ち,梯子昇降
	if(_root.zero_saber=="charge_normal" or _root.zero_saber=="charge_jump" or _root.zero_saber=="charge_wall_slide" or _root.zero_saber=="charge_ladder"){}
}
 

・・・チャージセイバーの移行

 チャージセイバーの移行の例を、以下に示す。

↓チャージセイバーの移行。

 ここでは、例として、「ジャンプチャージセイバー」から「通常のチャージセイバー」への移行に関して解説する。

 移行に関する記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
		_root.zero_saber="charge_"+_root.zero_action
 

 ここで、「_root.zero_action」を「"normal"」とすると、上記の記述は以下の通りとなる。

ASのファイル:なし
 
		_root.zero_saber="charge_normal"
 

 後の処理は、「・セイバーモーション(非チャージセイバー)」の「・・歩きセイバー」とほぼ同様となる。

ASのファイル:zero_saber.txt
 
		_parent.zero_AA.gotoAndStop(["zero_AA_charge_saber_"+_root.zero_action]);zero_saber_AA.gotoAndStop(["zero_charge_saber_AA_"+_root.zero_action]);zero_saber_hitrect.gotoAndStop(["zero_charge_saber_hitrect_"+_root.zero_action])
		_parent.zero_AA["zero_AA_charge_saber_"+_root.zero_action].gotoAndStop(_root.count_zero_saber_time);zero_saber_AA["zero_charge_saber_AA_"+_root.zero_action].gotoAndStop(_root.count_zero_saber_time);zero_saber_hitrect.zero_saber_hitrect_synthesis.gotoAndStop(_root.count_zero_saber_time)	//該当するチャージセイバーのフレームを指定する
 
 フレームを指定する理由に関しては、「・セイバーモーション(非チャージセイバー)」の「・・ジャンプセイバーから壁ずり落ちセイバーへの移行」を参照。

・・ジャンプ開始・壁蹴り

 ジャンプ開始・壁蹴りの場合は、「ジャンプチャージセイバー」を行うことになる。

ASのファイル:zero_saber.txt
 
else if(_root.zero_action=="jump_start" or _root.zero_action=="wall_kick"){	//ジャンプ開始・壁蹴り
	if(_root.zero_saber=="charge_normal" or _root.zero_saber=="charge_jump" or _root.zero_saber=="charge_wall_slide" or _root.zero_saber=="charge_ladder"){
		_root.zero_saber="charge_jump"}
}
 
 フレームを指定する理由に関しては、「・セイバーモーション(非チャージセイバー)」の「・・ジャンプセイバーから壁ずり落ちセイバーへの移行」を参照。

・・下入れセイバー

 「ジャンプチャージセイバー」からも「下入れセイバー」に移行できるように設定している(原作準拠)。

↓「ジャンプチャージセイバー」から「下入れセイバー」への移行。

ASのファイル:zero_saber.txt
 
	else if(_root.zero_saber=="charge_jump"){	//ジャンプチャージセイバー
		if(keydown_down==1 and _root.count_zero_saber_time>=19 and _root.count_zero_saber_time<=20){	//下キーの入力がある場合・カウントが特定の範囲内の場合
			_root.zero_saber="jump"	//ジャンプセイバーに移行
			_root.count_zero_saber_time_max=19;_root.count_zero_saber_time=12
			_root.count_zero_saber_time--	//カウントを減少させる
			_root.zero_saber_jump_down=2	//下入れセイバーの判定(1フレーム目のみ通常の下入れセイバーと区別するために,判定に2を代入)
			_root.zero_element_attachment_saber="none"	//無属性にする(エレメントアタッチメントを無効化)
		}
	}
 
・「keydown_down==1 and _root.count_zero_saber_time>=19 and _root.count_zero_saber_time<=20」:下キーの入力があり、「セイバーモーションの時間のカウント」が特定の範囲内にある
・「_root.zero_saber="jump"」:ジャンプセイバーに移行する。
・「_root.count_zero_saber_time_max=19;_root.count_zero_saber_time=12」:「セイバーモーションの時間の最大値」を、ジャンプセイバーの値にする。また、「セイバーモーションの時間のカウント」を、下入れセイバーのフレームに合わせる。
・「_root.zero_saber_jump_down=2」:下入れセイバーの判定(1フレーム目のみ通常の下入れセイバーと区別するために、判定に2を代入)
・「_root.zero_element_attachment_saber="none"」:チャージセイバーは、エレメントアタッチメントにより、属性が付加される場合があるので、それを無効化するために、無属性にする。

 上記の記述により、次のフレームからは、「・セイバーモーション(非チャージセイバー)」の「・・下入れセイバー」の処理が行われることになる。

・セイバー発動の条件

・・概要

 バスター発射の「・バスター発射の条件」と重複している記述に関しては、そちらを参照。なお、セイバーの場合は、「セミチャージ判定」は、「非チャージ判定」と同じものとして扱う
 「buffer_keydown_new_saber」に関しては、「・セイバーの先行入力」を参照。

 「セイバー発動の前提となる条件」に関する記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
if(_root.zero_action!="damage" and _root.zero_action!="bind" and _root.event_pause==0){	//被ダメージ状態・拘束状態・イベント停止判定がある場合は不可能}
 

・・非チャージ判定、セミチャージ判定

・・・歩きセイバー

 ここでは、記述が簡易である、「歩きセイバー」を例にする。

 記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
		else if(_root.zero_action=="walk" and _root.zero_saber=="none"){	//歩き
			_root.zero_saber="walk";_root.count_zero_saber_time_max=18;_root.count_zero_saber_time=0	//歩きセイバー
		}
 
・「_root.zero_action=="walk" and _root.zero_saber=="none"」:「アクションの状態」が「歩き」であり、「セイバーモーションの判定」が「なし」。
・「_root.zero_saber="walk"」:「セイバーモーションの判定」を「歩きセイバー」にする。
・「_root.count_zero_saber_time_max=18」:「セイバーモーションの時間の最大値」を、「歩きセイバー」の値にする。
・「_root.count_zero_saber_time=0」:「セイバーモーションの時間のカウント」を、「0」にする。なお、この後の「・セイバーモーションの時間」の処理により、カウントは「1」となる。

 この記述により、次のフレームから、「・セイバーモーション(非チャージセイバー)」の「・・歩きセイバー」の処理が行われることになる。

 他の大半の「セイバーの発動」に関しても、同様の記述をしている。

・・・セイバーの派生

 セイバーの中には、別のセイバーから派生するものがある
 ここでは、例として、「通常状態のセイバー(一段目)」から「通常状態セイバー(二段目)」への派生を解説する。

↓「通常状態のセイバー(一段目)」から「通常状態セイバー(二段目)」への派生。

ASのファイル:zero_saber.txt
 
			else if(_root.zero_saber=="normal_1" and _root.count_zero_saber_time>=8){_root.zero_saber="normal_2";_root.count_zero_saber_time_max=24;_root.count_zero_saber_time=0}	//二段目(一段目のセイバーモーション中に派生)
 
・「_root.zero_saber=="normal_1" and _root.count_zero_saber_time>=8」:「セイバーモーションの判定」が「通常状態のセイバー(一段目)」であり、「セイバーモーションの時間のカウント」が特定の値以上。
・「_root.zero_saber="normal_2"」:「セイバーモーションの判定」を「通常状態(二段目)」にする。他の処理は、「・・・歩きセイバー」と同様となる。

・・フルチャージ判定

・・・概要

 「フルチャージ判定」に関しても、基本的な記述は、「・・非チャージ判定、セミチャージ判定」の「・・・歩きセイバー」と同様なので、そちらを参照。

・・・エレメントアタッチメント

 ボディチップの「・エレメントアタッチメント」を参照。

・・・通常状態のチャージセイバー

 「通常状態のチャージセイバー」は、歩き・ダッシュからも発動可能だが、通常状態に移行した上で発動することになる

通常状態のチャージセイバー(ダッシュから通常状態への移行)。

ASのファイル:zero_saber.txt
 
		if((_root.zero_action=="normal" or _root.zero_action=="walk" or _root.zero_action=="dash") and _root.zero_saber=="none"){_root.zero_action="normal";_root.zero_saber="charge_normal";_root.count_zero_saber_time_max=26;_root.count_zero_saber_time=0}	//通常状態・歩き・ダッシュ(通常状態に移行してチャージセイバー)
 

・・・ジャンプチャージセイバー

 「ジャンプチャージセイバー」は、壁蹴りからも発動可能だが、ジャンプへの移行は行わない。つまり、ジャンプチャージセイバーのモーションをしながら、壁蹴りをすることになる(原作準拠)。

↓ジャンプチャージセイバー中の壁蹴り

ASのファイル:zero_saber.txt
 
		else if((_root.zero_action=="jump_start" or _root.zero_action=="jump" or _root.zero_action=="wall_kick") and _root.zero_saber=="none"){_root.zero_saber="charge_jump";_root.count_zero_saber_time_max=26;_root.count_zero_saber_time=0}	//ジャンプ開始・ジャンプ・壁蹴り
 

 「ジャンプチャージセイバー」は、エアダッシュからも発動可能だが、ジャンプに移行した上で発動することになる

↓ジャンプチャージセイバー(エアダッシュからジャンプへの移行)。

ASのファイル:zero_saber.txt
 
		else if(_root.zero_action=="air_dash" and _root.zero_saber=="none"){_root.zero_action="jump";_root.zero_saber="charge_jump";_root.count_zero_saber_time_max=26;_root.count_zero_saber_time=0}	//エアダッシュ(ジャンプに移行してチャージセイバー)
 

・セイバーの先行入力

・・概要

 セイバーに関しては、先行入力を実装している。これにより、「設定されているタイミングよりも、僅かに前のタイミング」においてセイバーキーを入力することでも、(発動可能な最速のタイミングで)セイバーが発動する
 被ダメージ状態拘束状態では先行入力できない。

↓「ジャンプセイバー」→着地して通常状態に移行→「ジャンプセイバー」のキャンセル→「通常状態のセイバー(一段目)」。

 着地前にセイバーキーの入力がある(「keydown_new_saber==1」)が、「セイバーの先行入力の判定」(「buffer_keydown_new_saber=1」)があるため、「通常状態のセイバー(一段目)」が発動する。

 なお、この要素は必須ではない。

・・セイバーの先行入力の判定

 セイバーキーの入力がある場合、カウントを0にして、「その後、セイバーキーの入力がない時間」をカウントする

ASのファイル:zero_saber.txt
 
if(_root.zero_action!="damage" and _root.zero_action!="bind" and keydown_new_saber==1){count_time_buffer_keydown_new_saber=0}	//セイバーキーの入力がある場合,カウントを0にする(被ダメージ状態・拘束状態は不可能)
else{count_time_buffer_keydown_new_saber++}	//セイバーキーの入力がない場合,カウントを増加させる
 

 カウントが許容範囲内の場合は、セイバーの先行入力の判定を付加する許容範囲外の場合は、判定をリセットする

ASのファイル:zero_saber.txt
 
if(count_time_buffer_keydown_new_saber<=count_time_buffer_keydown_new_saber_allowable){buffer_keydown_new_saber=1}	//カウントが許容範囲内の場合,セイバーの先行入力の判定
else{buffer_keydown_new_saber=0}
 

・・セイバー発動の条件における「セイバーの先行入力の判定」

 セイバー発動の条件の記述の一部は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
	if(((keydown_new_saber==1 or buffer_keydown_new_saber==1) and _root.zero_charge_saber=="none") or ((_root.zero_tip_head_auto_charge_saber==-1 and keydown_saber==0) or (_root.zero_tip_head_auto_charge_saber==1 and (keydown_new_saber==1 or buffer_keydown_new_saber==1))) and _root.zero_charge_saber=="semicharge"){	//非チャージ判定があり,セイバーキーの入力がある場合,セミチャージ判定があり,セイバーキーの入力がなくなった場合(セミチャージ判定があり,オートチャージ装着中に,セイバーキーの入力がある場合)}
 
・「keydown_new_saber==1 or buffer_keydown_new_saber==1」:セイバーキーの入力がある、または、「セイバーの先行入力の判定」がある。つまり、「セイバーの先行入力の判定」がある場合は、セイバーキーの入力が(現在のフレームで)ない場合でも、入力がある場合と同様の処理が行われることになる。

・・セイバーが発動した場合

 「・セイバー発動の条件」の処理により、セイバーが発動した場合は、セイバーの先行入力の判定用のカウントを初期値にする。この処理により、次のフレームで「セイバーの先行入力の判定」がリセットされることになる。

ASのファイル:zero_saber.txt
 
if(_root.zero_saber!="none" and _root.count_zero_saber_time==0){count_time_buffer_keydown_new_saber=count_time_buffer_keydown_new_saber_allowable+1}	//セイバーが発動した場合,セイバーの先行入力の判定用のカウントを初期値にする
 

・セイバーモーションのキャンセル

 現在の「アクションの状態」では起こり得ないセイバーモーションをキャンセルする

↓「歩きセイバー」のキャンセル。「歩き」から「別のアクションの状態」になることでキャンセルされる。

 例えば、「ダッシュ」「エアダッシュ」によるキャンセルの記述は、以下の通りとなる。

ASのファイル:zero_saber.txt
 
else if(_root.zero_action=="dash" or _root.zero_action=="air_dash"){
	if(_root.zero_saber!="dash" and _root.zero_saber!="ex_saber_dash_thrust"){_root.zero_saber="none"}
}
 
・「_root.zero_action=="dash" or _root.zero_action=="air_dash"」:ゼロのアクションの状態が「ダッシュ」「エアダッシュ」。
・「_root.zero_saber!="dash" and _root.zero_saber!="ex_saber_dash_thrust"」:セイバーモーションの判定が「ダッシュセイバー」「EXダッシュ突き」ではない。
・「_root.zero_saber="none"」:セイバーモーションの判定を「なし」にする(キャンセルする)。

 他の「アクションの状態」や「セイバーのモーションの判定」に関しても、同様の記述をしている。

 なお、原作においては、キャンセルをした場合も、(セイバー本体のモーションが終了する、または、新たにセイバーモーションが発動されるまで)セイバー本体は残るが、このゲームにおいては、セイバー本体を消している。

・セイバーモーションの時間

・・セイバーモーションの判定がある場合

 セイバーモーションの判定がある場合は、セイバーモーションの時間のカウントを増加させるカウントが最大値以上の場合は、セイバーモーションの判定をリセットする
 また、セイバーモーションの判定がある場合は、バスターモーションの判定を解除する。

セイバーモーションの判定がある場合。

ASのファイル:zero_saber.txt
 
if(_root.zero_saber!="none"){	//セイバーモーションの判定がある場合
	_root.zero_buster="none";_root.count_zero_buster_time=0	//バスターモーションの判定を解除
	if(_root.count_zero_saber_time>=_root.count_zero_saber_time_max){_root.zero_saber="none"}	//カウントが最大値以上の場合,セイバーモーションの判定をリセット
	_root.count_zero_saber_time++	//セイバーモーションの時間のカウントを増加させる
}
 
 念の為、「カウントが最大値の場合」ではなく、「カウントが最大値”以上”の場合」としている。

・・セイバーモーションの判定がない場合

 セイバーモーションの判定がない場合は、セイバーのAAやhitrectを「なし(何も表示されない状態)」にして、各種の判定をリセットする

↓例えば、拘束状態では、「_root.zero_saber」が「"none"」になる。その際に、各種の判定をリセットする。

ASのファイル:zero_saber.txt
 
if(_root.zero_saber=="none"){	//セイバーモーションの判定がない場合,各種の判定をリセット
	zero_saber_AA.gotoAndStop("zero_saber_AA_none");zero_saber_hitrect.gotoAndStop("zero_saber_hitrect_none")
	_root.count_zero_saber_time=0;_root.count_zero_saber_time_max=0
	_root.zero_saber_jump_down=0}
 
・「_root.count_zero_saber_time_max=0」:不要な記述と思われるが、一応記述している。

 他の処理により「_root.zero_saber」が「"none"」となった場合に、即座に各種の判定をリセットするために、この記述は、セイバー関連の処理の最後に行う必要がある。
 逆に、この記述より後に「_root.zero_saber」が「"none"」となるような処理をすると、各種の判定のリセットが次のフレームになり、不具合が生じる可能性が出てくる

・セイバーのチャージ判定

 チャージ判定を参照。

最終更新:2020年12月19日 09:31