・コンセプト

・・概要

 氷の巨体系ボスは、概ね「弱い」との烙印を押されている(イエティンガーのような例外もいるが)。その評価を払拭する目的で制作したボス。

・・アドリブ性の要求

 近接しすぎている場合はローリングキックなどを警戒する必要があり、距離を離しすぎると、強制的に睡眠に移行するので、「回避・反撃をしながらも、中距離をキープする」といった立ち回りを要求される。

 氷柱攻撃はランダム性が高い。氷柱の配置を瞬時に把握し、回避・反撃をする必要がある。

・・バランス調整

 前半は極端に弱いが、ライフがある程度減少するとEXにより超回復し、その後の攻撃(+回復)が強化されるように調整している。

 このボスは、特定の条件が満たされた場合、ノックバックする。この措置により、追い詰められて詰む危険性を低減している。「・ボスと攻撃との接触判定がある場合の処理」の「・・ノックバック」を参照。
 ただし、その影響で、セイバーコンボがフルヒットしにくくなる。…が、ローリングキックなどの攻撃を回避しやすくもなる。
 …といったように、メリット・デメリットが混在している。

・loadの処理

・・ゼロの氷の床との接触判定

 ゼロがスパイク・アイスを装着中ではない場合、ゼロの氷の床との接触判定を付加する。この処理により、ボス戦開始直後のゼロのダッシュジャンプが不可能になる。

ASのファイル:boss_zonu_load.txt
 
if(_root.zero_tip_foot_spike_ice==-1){_root.zero_hit_ice_floor=1}	//ゼロの氷の床との接触判定を付加(ボス戦開始直後のゼロのダッシュジャンプが不可能になる)
 

・減速

・・概要

 床との接触判定がある場合は、減速の処理を行う。そして、速度が一定の値以下の場合は、速度を0にする。

ASのファイル:boss_zonu.txt
 
		if(hit_floor!=0){
			if(_root.velocity_boss_x>0){_root.velocity_boss_x-=decelaration_boss_knockback}	//速度が0ではない場合,減速
			else if(_root.velocity_boss_x<0){_root.velocity_boss_x+=decelaration_boss_knockback}
		}
		if(Math.abs(_root.velocity_boss_x)<=decelaration_boss_knockback){_root.velocity_boss_x=0}	//速度が一定の値以下の場合,速度を0にする
 

・通常状態

・・乱数でアクションを選択

 EXの後は、「ブレスに移行」が追加される。
 遠距離の場合は、「睡眠」(EXの後の場合は「冷凍睡眠」)に移行する。

・・睡眠への移行のカウント

 「睡眠への移行のカウント」を増加させる。

ASのファイル:boss_zonu_action_normal.txt
 
	count_boss_sleep+=10	//睡眠への移行のカウントを増加させる
 

・・睡眠への移行

 「睡眠への移行のカウント」が、最大値以上の場合、カウントをリセットし、「睡眠」(EXの後の場合は「冷凍睡眠」)に移行する。
 ただし、EX冷凍睡眠への移行の条件が満たされている場合は、そちらが優先される。

ASのファイル:boss_zonu_action_normal.txt
 
	else if(count_boss_sleep>=count_boss_sleep_max){	//睡眠への移行のカウントが最大値以上の場合
		count_boss_sleep=0	//睡眠への移行のカウントをリセット
		if(count_boss_ex_cold_sleep==0){_root.boss_action="sleep"}	//睡眠に移行
		else{_root.boss_action="cold_sleep"}	//冷凍睡眠に移行
	}
 

・・EX冷凍睡眠への移行

 ライフが1/3以下の場合は、EX冷凍睡眠に移行する
 同時に、「待機時間の最大値」「突進の速度」を変更する。この処理により、ボスが強化される。

ASのファイル:boss_zonu_action_normal.txt
 
	if(count_boss_ex_cold_sleep==0 and _root.boss_life<=_root.boss_initial_life*1/3){	//ライフが1/3以下の場合
		count_boss_sleep=0	//睡眠への移行のカウントをリセット
		_root.boss_action="ex_cold_sleep";count_boss_ex_cold_sleep++	//EX冷凍睡眠に移行
		count_boss_wait_time_max=count_boss_wait_time_max_after_ex	//待機時間の最大値を変更する
		velocity_boss_rush=velocity_boss_rush_after_ex	//突進の速度を変更する
	}
 

・睡眠

・・概要

 ライフを回復する。

 特定の条件が満たされた場合、丸焼きに移行する。「・ボスと攻撃との接触判定がある場合の処理」の「・・睡眠の場合」を参照。

・・ライフ回復判定

 カウントが最大値の場合、「ライフ回復判定」を付加する。

ASのファイル:boss_zonu_action_sleep.txt
 
	boss_sleep_recovery="sleep"	//ライフ回復判定
 

・・ライフ回復

 「ライフ回復判定」がある場合は、ライフ回復の処理を行う。回復量は、「ライフ回復判定」によって異なる。

ASのファイル:boss_zonu.txt
 
		if(boss_sleep_recovery!="none"){	//ライフ回復判定がある場合
			if(boss_sleep_recovery=="sleep"){_root.enemy_identify[number_enemy-1]+=4}	//ライフ回復if(_root.enemy_identify[number_enemy-1]>_root.boss_initial_life){_root.enemy_identify[number_enemy-1]=_root.boss_initial_life}	//最大値より大きい場合,補正する
︙
			boss_sleep_recovery="none"	//判定をリセット
		}
 

・冷凍睡眠

・・概要

 「・睡眠」とほぼ同様の処理をしているが、クリスタル(小)を出現させている点が異なる。また、ライフ回復量も異なる。
 「・ボスと攻撃との接触判定がある場合の処理」の「・・冷凍睡眠・EX冷凍睡眠の場合」も参照。

・・クリスタル(小)の出現

 クリスタル(小)を出現させる際に、出現させた敵の番号を保存する。この値は、「・・睡眠への移行」で用いる。

ASのファイル:boss_zonu_action_cold_sleep.txt
 
		number_enemy_ice_crystal_small=i	//出現させた敵の番号を保存
 

・・睡眠への移行

 出現させたクリスタル(小)が破壊された場合、睡眠に移行する

ASのファイル:boss_zonu_action_cold_sleep.txt
 
if(_root.enemy_identify[number_enemy_ice_crystal_small-1]=="none"){boss_ice_crystal_small_appearance=0;count_boss_time=0;_root.boss_action="sleep"}	//出現させたクリスタル(小)が破壊された場合,出現判定・カウントをリセット,睡眠に移行
 

・ジャンプ(1)

・・概要

 ゼロの方向に向かってジャンプする。

 EXの後の場合は、床との接触判定がある場合に、敵(ニードルアイス)を出現させる。
 ボスに近接し、タイミング良くジャンプすれば回避できる。ダブルジャンプを装着すれば回避しやすくなる。

↓ジャンプ(1)。

・ジャンプ(2)

・・概要

 「・ジャンプ(1)」とほぼ同様の処理を行っている。

↓ジャンプ(2)。

・ローリングキック

・・概要

 この攻撃は、前動作なしで発生するようにしている。故に、近接しすぎていると回避不能になる。

 回転するのはボスのAAのみであり、ボスのhitrectは変化しない(手抜き)。

↓ローリングキック。

・・ローリングキック

 ローリングキックとゼロとの接触判定がある場合、「ローリングキックの吹き飛ばし用のMC」を出現させる

ASのファイル:boss_zonu_rolling_kick.txt
 
		if(boss_zonu_rolling_kick_blow_appearance==0 and hit_zero!=0){	//ゼロとの接触判定がある場合
			boss_zonu_rolling_kick_blow_appearance=1	//ローリングキックの吹き飛ばし用のMCの出現判定
			enemy_appearance_name="boss_zonu_rolling_kick_blow"
			#include "zero_AS/enemy/enemy_appearance.txt"}
 

・・吹き飛ばし用のMC

・・・概要

 「吹き飛ばし」に関しては、「吹き飛ばし用のMC」を敵として出現させることで対処している。

↓「吹き飛ばし用のMC」。hitrectの大きさはゼロに合わせている。

・・・ゼロの位置調整

 「吹き飛ばし用のMC」の位置に、ゼロの位置を強制的に位置調整する
 この処理は、「吹き飛ばし用のMC」の移動と、地形との接触判定による位置調整の処理の後に行う。

ASのファイル:boss_zonu_rolling_kick_blow.txt
 
		_root.board.zero._x=_parent._x;_root.board.zero._y=_parent._y	//ゼロの位置調整
 

・・・消滅

 吹き飛ばしの時間の最大値の場合、消滅する。
 同時に、ゼロに速度を伝達している。この処理を行わない場合は、ゼロの動作が不自然になる。

ASのファイル:boss_zonu_rolling_kick_blow.txt
 
		if(count_enemy_time_blow==count_enemy_time_blow_max){	//吹き飛ばしの時間の最大値の場合,消滅
			_root.velocity_zero_y=velocity_enemy_y	//ゼロに速度を伝達
			_root.enemy_identify[number_enemy-1]="none";_parent.removeMovieClip()	//MCを削除
		}
 

・・・ボディチップの影響

 アブソーバ装着中の場合は、吹き飛ばしの速度を減少させるライト装着中の場合は、吹き飛ばしの速度を増加させる(いずれも原作準拠)。
 なお、loadの処理において速度を決定しているため、吹き飛ばしの途中で装着しても速度は変化しない。

↓アブソーバ装着中の場合。

ASのファイル:boss_zonu_rolling_kick_blow.txt
 
	if(_root.zero_tip_body_absorber==1){velocity_enemy_blow_x*=0.5;velocity_enemy_blow_y*=0.5}	//アブソーバ装着中の場合,速度を減少させる
	else if(_root.zero_tip_body_light==1){velocity_enemy_blow_x+=1*enemy_direction}	//ライト装着中の場合,速度を増加させる
 

・突進

・・概要

 ゼロの方向に向かって突進する。突進の前にはジャンプを行う。
 「突進判定」により、処理の内容が変化する。

↓突進。

・・突進判定がない場合

 床との接触判定がある場合は、突進の初速度を付加し、「突進判定」を付加する。
 同時に、各種の判定・カウントをリセットしておく。

・・突進判定がある場合

 氷柱攻撃の時間のカウントが最大値の場合は、氷柱を出現させ、カウントをリセットする。
 ゼロとの接触判定がある場合は、「突進の吹き飛ばし用のMC」を出現させる。
 速度が0となった場合は、各種の判定・カウントをリセットし、通常状態に移行する。

・氷柱攻撃

・・概要

 ゼロの周囲に、氷柱を配置する。
 「氷柱の出現用のMC」を出現させ、そのMCで処理を行っている。

↓氷柱攻撃。「氷柱の出現用のMC」(灰色の矩形)は、実際のゲーム画面では、非表示にしている。

・・氷柱の出現用のMCの出現

 「氷柱の出現用のMC」の出現の際に、「EX冷凍睡眠の回数」「氷柱攻撃の時間の最大値」を伝達する。

ASのファイル:boss_zonu_action_icicle.txt
 
	enemy.enemy_hitrect.count_boss_ex_cold_sleep=count_boss_ex_cold_sleep	//EX冷凍睡眠の回数を伝達
	enemy.enemy_hitrect.count_boss_icicle_time_max=count_boss_icicle_time_max	//氷柱攻撃の時間の最大値を伝達
 

・・氷柱の出現用のMC

・・・各種地形との接触判定

 「氷柱の出現用のMC」は、氷柱を出現させる際に、壁との接触判定を取得し、位置調整を行う。

・・・氷柱の出現判定

 ランダムで「出現させる氷柱の番号」を取得し、「氷柱の出現判定用の配列」を埋めることで出現判定を付加する。
 この処理を、「出現させる氷柱の個数の最大値」まで行う。「出現させる氷柱の個数の最大値」は、EXの後に変化する。

ASのファイル:boss_zonu_icicle_appearance.txt
 
			while(number_icicle!=number_icicle_max){
				enemy_random=Math.floor(Math.random()*6)+1	//ランダムで出現させる氷柱の番号を取得
				if(icicle_identify[enemy_random-1]==0){	//配列に空きがある場合
					icicle_identify[enemy_random-1]=1	//配列を埋める
					number_icicle++	//カウントを増加させる
				}
			}
 

・・・乱数で配置のパターンを選択

 乱数で配置のパターン(「左右+上」「上」「半円」)を選択する。

・ブレス

・・概要

 ゼロを拘束状態にするブレスを出現させる。

↓ブレス。ダッシュでも回避できる。

・・ブレス

 ゼロとの接触判定がある場合は、「クリスタル(ゼロ拘束)」を出現させる。

・・クリスタル(ゼロ拘束)

・・・loadの処理

 ゼロを拘束状態にする。

ASのファイル:boss_zonu_ice_crystal_zero_bind.txt
 
	_root.zero_action="bind"	//ゼロを拘束状態にする
 

・・・キー入力のカウント

 キー入力(スタートキー・セレクトキー以外)がある場合、キー入力のカウントを増加させる。

ASのファイル:boss_zonu_ice_crystal_zero_bind.txt
 
		for(i=1;i<=8;i++){
			if(_root["keydown_new_"+_root.key_name_list[i-1]]==1){count_keydown_new++;break}	//キー入力がある場合,キー入力のカウントを増加させる
		}
 

・・・消滅判定

 カウントが最大値の場合は、ゼロをジャンプにする。また、クリスタル(ゼロ拘束)の破壊判定を付加する。
 ゼロが被ダメージ状態の場合、または、破壊された場合は、クリスタル(ゼロ拘束)の破壊判定を付加する。

ASのファイル:boss_zonu_ice_crystal_zero_bind.txt
 
		if(count_keydown_new==count_keydown_new_max){enemy_break="other";_root.zero_action="jump"}	//カウントが最大値の場合,ゼロをジャンプにする,破壊判定を付加
		else if(_root.zero_action=="damage" or _root.zero_life==0){enemy_break="other"}	//ゼロが被ダメージ状態の場合,破壊された場合,破壊判定を付加
 

・EX冷凍睡眠

・・概要

 「・冷凍睡眠」とほぼ全く同様の処理を行っている。

・丸焼き

・・概要

 「・ボスと攻撃との接触判定がある場合の処理」の「・・睡眠の場合」を参照。

・ボスと攻撃との接触判定がある場合の処理

・・ノックバック

・・・概要

 このボスは、特定の条件が満たされた場合、ノックバックする
 (処理の構築が更に面倒なことになるため)「判定が持続する攻撃」に関しては、「セイバー本体」以外ではノックバックしないようにしている。

↓ノックバック。ノックバックの速度は、ダメージに比例する。

↓ゼロの攻撃により、ボスの突進を減速(+反転)させることができる。

 前提となる条件は、以下の通りとなる。
・ボスのアクションの状態が、「通常状態」「睡眠」「ブレス」「氷柱攻撃」「突進」「丸焼き」のいずれか。
・ボスと床との接触判定がある。

・・・ノックバックの条件(セイバー)

 条件は、以下の通りとなる。
・連鎖値が「ノックバック用の連鎖値(セイバー)」と等しくない。これは、同一の連鎖値のセイバーにより、速度が付加され続けることを回避するための条件となる。
・連鎖値が特定の値よりも低い。これは、「セイバー本体」による攻撃でのみノックバックさせるための条件となる。

 「・・・ノックバック用の連鎖値(セイバー)」も参照。

↓上記の条件を無効化した場合(1)。同一の連鎖値のセイバーにより、速度が付加され続ける。

↓上記の条件を無効化した場合(2)。「セイバー本体以外」の攻撃により、速度が付加され続ける。

ASのファイル:boss_zonu_hit_attack.txt
 
		if(enemy_hit_attack_type=="saber" and enemy_chain!=enemy_chain_knockback_saber and enemy_chain<400){	//ノックバックの条件(セイバー)}
 

・・・ノックバックの条件(バスター)

 条件は、以下の通りとなる。
・連鎖値が特定の値よりも低い。これは、「判定が持続しないバスター」による攻撃でのみノックバックさせるための条件となる。

ASのファイル:boss_zonu_hit_attack.txt
 
		else if(enemy_hit_attack_type=="buster" and enemy_chain<200){	//ノックバックの条件(バスター)}
 

・・・ノックバック用の連鎖値(セイバー)

 セイバーとの接触判定がある場合は、ノックバック用の連鎖値(セイバー)を保存する。

ASのファイル:boss_zonu_hit_attack.txt
 
	if(enemy_hit_attack_type=="saber"){enemy_chain_knockback_saber=enemy_chain}	//ノックバック用の連鎖値(セイバー)を保存
 

 ゼロがセイバーモーション中ではない場合は、ノックバック用の連鎖値(セイバー)をリセットする。

↓ノックバック用の連鎖値(セイバー)をリセットすることにより、通常状態のセイバー(一段目)により連続でノックバックする。

ASのファイル:boss_zonu_hit_attack.txt
 
if(_root.zero_saber=="none"){enemy_chain_knockback_saber=0}	//ノックバック用の連鎖値(セイバー)をリセット
 

・・睡眠の場合

 睡眠の場合は、炎属性攻撃の場合、丸焼きに移行する。それ以外の場合は、通常状態に移行する。

 この処理は、連鎖値とは無関係に行われる

↓丸焼きへの移行。ダメージチャンスとなる。

ASのファイル:boss_zonu_hit_attack.txt
 
	if(_root.boss_action=="sleep"){	//睡眠の場合
		count_boss_time=0	//カウントをリセット
		if(enemy_hit_attack_element=="fire"){_root.velocity_boss_x=0;_root.boss_action="barbecue"}	//炎属性攻撃の場合,丸焼きに移行
		else{_root.boss_action="normal"}	//通常状態に移行
	}
 

・・冷凍睡眠・EX冷凍睡眠の場合

 冷凍睡眠・EX冷凍睡眠の場合は、処理を行わない。

↓ベクトルレーザー(チャージ)の例。ボスにはダメージが入らない。

ASのファイル:boss_zonu_hit_attack.txt
 
	if(_root.boss_action=="cold_sleep" or _root.boss_action=="ex_cold_sleep"){}	//冷凍睡眠・EX冷凍睡眠の場合,処理を行わない
 

・・冷凍睡眠・EX冷凍睡眠以外の場合

 冷凍睡眠・EX冷凍睡眠以外の場合は、(通常通り)ダメージ関連の処理を行う。
 「睡眠への移行のカウント」に、ダメージの絶対値を加算する。

ASのファイル:boss_zonu_hit_attack.txt
 
		count_boss_sleep+=Math.abs(enemy_hit_attack)	//睡眠への移行のカウントを増加させる
 

最終更新:2020年12月19日 08:57