・概要
攻撃(
バスター、
セイバーなど)との
接触判定がある場合の処理に関して解説する。
敵によって処理が異なるが、ここでは、典型的な2つのパターンに関して解説する。
・loadの処理
・・攻撃との接触判定
「・攻撃との
接触判定があり、連鎖値が大きい場合(1)」を参照。
ASのファイル:enemy_load_hit_attack_chain_invincible.txt
enemy_hit_attack_type="none" //敵が受けた攻撃の種類(バスター,セイバー)
enemy_hit_attack=0 //敵と攻撃との接触判定(敵が受けた攻撃のダメージ)
enemy_hit_attack_element="none" //敵の属性攻撃接触判定
・・連鎖値
「・攻撃との
接触判定があり、連鎖値が大きい場合(1)」を参照。
ASのファイル:enemy_load_hit_attack_chain_invincible.txt
enemy_chain=0 //敵の連鎖値
enemy_chain_old=0 //敵の連鎖値(保存用)
・攻撃との接触判定があり、連鎖値が大きい場合(1)
・・概要
大半の敵(ビッタアクアなど)に採用している、典型的な処理に関して解説する。
・・ダメージを受ける前提となる条件
敵がダメージを受ける前提となる条件は、以下の通りとなる。
・攻撃との接触判定がある。
・「敵の連鎖値(保存用)」よりも「ゼロの攻撃の連鎖値」が大きい。
ASのファイル:enemy_hit_attack_universal_1.txt
if(enemy_hit_attack_type!="none" and enemy_chain>enemy_chain_old){
︙
}
・・セイバーのヒットストップの判定
「敵が受けた攻撃の種類」が「セイバー」であり、「特定の連鎖値未満」(=セイバー本体による攻撃)の場合、セイバーのヒットストップの判定を付加する。「・セイバーのヒットストップ」も参照。
ASのファイル:enemy_hit_attack_universal_1.txt
if(enemy_hit_attack_type=="saber" and enemy_chain<400){_root.saber_hitstop=1} //セイバーのヒットストップの判定
・・エフェクトの判定の付加
「ダメージエフェクトの判定」「属性攻撃のエフェクトの判定」を付加する。
ASのファイル:enemy_hit_attack_universal_1.txt
enemy_effect=enemy_hit_attack_type //ダメージエフェクトの判定を付加
「属性攻撃のエフェクトの判定」に関しては、例えば、「敵が雷属性」であり、「ゼロの攻撃の属性が氷属性」の場合は、「属性攻撃のエフェクトの判定」は「氷属性」となる。
ASのファイル:enemy_hit_attack_element.txt
if(enemy_element=="thunder" and enemy_hit_attack_element=="ice"){enemy_element_effect="ice"} //敵が雷属性の場合
︙
・・敵のライフの減少、破壊判定
敵のライフを減少させる。
敵のライフが0以下の場合は、破壊判定を付加する。
ASのファイル:enemy_hit_attack_universal_1.txt
_root.enemy_identify[number_enemy-1]-=Math.abs(enemy_hit_attack) //敵のライフを減少させる
if(_root.enemy_identify[number_enemy-1]<=0){enemy_break=enemy_hit_attack_type} //敵のライフが0以下の場合,破壊判定
・「Math.abs(enemy_hit)」:「敵が受けた攻撃のダメージ」の絶対値。「敵が受けた攻撃のダメージ」には、「攻撃の方向による符号の補正」が行われているため、絶対値で計算する必要がある。
連鎖値、属性、攻撃の方向・角度の「・攻撃の方向による符号の補正」も参照。
・「enemy_break=enemy_hit_type」:破壊判定(バスター・セイバー)の付加。破壊判定の種類により、敵の破壊の挙動が異なる(原作準拠)。
一部の敵(荒巻ボールなど)は、破壊判定を「その他」に変換している。
ASのファイル:一部の敵のAS
if(enemy_break!="none"){enemy_break="other"}
・・無敵時間、連鎖値
無敵時間の判定を付加し、無敵時間のカウントをリセットする。
連鎖値を保存する。この処理により、以降は、連鎖値がリセットされるまで、この連鎖値以下の攻撃に対して、処理を行わなくなる。
ASのファイル:enemy_hit_attack_universal_1.txt
enemy_invincible=1;count_enemy_invincible_time=0 //無敵時間の判定,カウントをリセット
enemy_chain_old=enemy_chain //連鎖値を保存
・攻撃との接触判定があり、連鎖値が大きい場合(2)
・・概要
一部の「破壊不可能な敵」(ギコのソニックなど)に採用している処理に関して解説する。
「・攻撃との
接触判定があり、連鎖値が大きい場合(1)」と重複している解説は省略する。
・・エフェクトの判定の付加
ガードエフェクトの判定を付加する。
ASのファイル:enemy_hit_attack_universal_2.txt
enemy_effect="guard" //ガードエフェクトの判定を付加
・・敵のライフの減少、破壊判定
処理を行わない。
・セイバーのヒットストップ
セイバーが敵にヒットした際に、ヒットストップするように設定している(原作準拠)。処理は、
ボードにおいて行っている。
↓
セイバーのヒットストップ。比較のために、(敵を破壊したため)ヒットストップがない場合も示す。
・・loadの処理
・・・判定、カウント
ASのファイル:board_load_saber_hitstop.txt
_root.saber_hitstop=0 //セイバーのヒットストップの判定
count_saber_hitstop=0 //セイバーのヒットストップのカウント
count_saber_hitstop_max=4 //セイバーのヒットストップのカウントの最大値
・・セイバーのヒットストップ
セイバーのヒットストップの判定がある場合、
セイバーのヒットストップのカウントを増加させる。
カウントが1の場合、一時停止判定を付加する。
一時停止、イベント停止も参照。
カウントが最大値の場合、ヒットストップの判定・ヒットストップのカウント・一時停止判定をリセットする。
ASのファイル:board_saber_hitstop.txt
if(_root.saber_hitstop==1){
count_saber_hitstop++ //セイバーのヒットストップのカウントを増加させる
if(count_saber_hitstop==1){_root.start_pause=1} //カウントが1の場合,一時停止判定
else if(count_saber_hitstop==count_saber_hitstop_max){_root.saber_hitstop=0;count_saber_hitstop=0;_root.start_pause=0} //カウントが最大値の場合,判定をリセット,カウントをリセット,一時停止判定をリセット
}
最終更新:2020年12月19日 08:58