・連鎖値
ゼロの攻撃には、それぞれ、「連鎖値」という値が設定されている。連鎖値には、「ボスに対する連鎖値」と「ボス以外に対する連鎖値」の2種類がある。
敵は、ゼロの攻撃がヒットした場合、無敵時間が発生するが、「無敵時間を発生させた攻撃の連鎖値」よりも「新たな攻撃の連鎖値」が大きい場合は、無敵時間を無視して攻撃がヒットする(そして、新たに無敵時間が発生することになる)。
このゲームにおいては、例えば、「チャージセイバーの連鎖値」>「フルチャージバスターの連鎖値」と設定している(ロックマンZXに準拠)。
↓チャージセイバーは「フルチャージバスターによる無敵時間」を無視できる。
↓フルチャージバスターは「チャージセイバーによる無敵時間」を無視できない。
更に、このゲームにおいては、ゼロの無敵時間に関しても連鎖値のシステムを適用している。そのため、ゼロが連続でダメージを受ける場合がある。
↓シグマショットは「シグマによる無敵時間」を無視できる。
なお、原作(ロックマンゼロ3)においては、オメガの
セイバー攻撃がゼロの無敵時間を無視できるように設定されているが、このゲームとは用いているシステムが異なると思われる。
・属性
・・概要
「ゼロの攻撃」と「敵」には、それぞれ、「属性」が設定されており、その関係により、「敵に与えるダメージの値」が変化する(原作準拠)。
属性には「無属性」「雷属性」「炎属性」「氷属性」の4種類がある。
↓属性攻撃。弱点となる属性で攻撃した場合には、エフェクトが付加される。
記述をしている箇所は、以下の通りとなる。
ASのファイル:zero_buster_attack_enemy.txt、zero_saber_attack_enemy.txt
#include "zero_AS/zero/zero_attack_enemy_element.txt"
・・ダメージの変化(無属性)
「敵が無属性の場合」「(敵が受けた攻撃が)無属性攻撃の場合」は、ダメージは変化しない。
ASのファイル:zero_attack_enemy_element.txt
if(enemy_element=="none" or zero_attack_element=="none"){enemy_hit_attack=zero_attack_damage} //敵が無属性の場合,無属性攻撃の場合,ダメージ*1
・・ダメージの変化(無属性以外)
ここでは、「敵が雷属性の場合」を例にする。
ASのファイル:zero_attack_enemy_element.txt
else if(enemy_element=="thunder"){ //敵が雷属性の場合
if(zero_attack_element=="ice"){enemy_hit_attack=Math.floor(zero_attack_damage*3/2)} //ダメージ*3/2
else if(zero_attack_element=="thunder"){enemy_hit_attack=Math.floor(zero_attack_damage*2/3)} //ダメージ*2/3
else if(zero_attack_element=="fire"){enemy_hit_attack=Math.floor(zero_attack_damage*1/3)} //ダメージ*1/3
}
・「enemy_element=="thunder"」:敵が雷属性。
・「zero_attack_element=="ice"」:ゼロの攻撃が氷属性。
・「enemy_hit_attack=Math.floor(zero_attack_damage*3/2)」:敵が受けた攻撃のダメージを、3/2倍にする(小数点以下切り捨て)。
「(敵が受けた攻撃が)雷属性攻撃の場合」は2/3倍、「(敵が受けた攻撃が)炎属性攻撃の場合」は1/3倍となる。
他の属性に関しても、類似した処理を行っている。
なお、計算式は原作準拠ではない。
・・ダメージが0の場合の補正
上記の処理の結果、ダメージが0となった場合は、補正を行う。
ASのファイル:zero_attack_enemy_element.txt
if(enemy_hit_attack==0){enemy_hit_attack=1} //ダメージが0の場合の補正
・「if(enemy_hit_attack==0)」:ダメージが「0」の場合。
・「enemy_hit_attack=1」:ダメージを「1」にする。
・攻撃の方向による符号の補正
・・概要
ゼロの攻撃には、それぞれ「攻撃の方向」が設定されている。
「ゼロの攻撃の方向」により、ダメージの符号が変化する。そして、その値が敵に伝達される。
この符号の変化は、「ゼロの攻撃による敵の移動」や「前方からのゼロの攻撃に対する、敵のガード判定」などに用いられる。
↓
バスターの例。「ゼロの攻撃の方向」により、「ゼロの攻撃による敵の移動」の方向が変化する。
・・バスターの攻撃の方向
バスターは、基本的には「バスターの方向」と「攻撃の方向」が一致する(loadの処理で設定)。
ただし、バスターのタイプが持続性(持続して接触判定が残る)の場合は、敵との位置関係によってバスターの攻撃の方向を変化させている。
↓敵との位置関係によってバスターの攻撃の方向を変化させる。この場合は、「バスターの位置(x方向)」が、「敵の位置(x方向)」よりも右にあるので、「バスターの攻撃の方向」は「-1」(左方向)となる。
ASのファイル:zero_buster_attack_enemy.txt
if(zero_buster_type=="persistent"){ //バスターのタイプが持続性である場合
if(_parent._x<=enemy._x){zero_buster_attack_direction=1} //敵との位置関係によってバスターの攻撃の方向を変化させる
else{zero_buster_attack_direction=-1}
}
・「if(_parent._x<=enemy._x)」:「バスターの位置(x方向)」が、「敵の位置(x方向)」よりも左にある場合。
・「zero_buster_attack_direction=1」:「バスターの攻撃の方向」は「1」(右向き)。
・「else」:「バスターの位置(x方向)」が、「敵の位置(x方向)」よりも右にある場合。
・「zero_buster_attack_direction=-1」:「バスターの攻撃の方向」は「-1」(左向き)。
・・セイバーの攻撃の方向
セイバーは、敵との位置関係によってセイバーの攻撃の方向を変化させている。
「・・バスターの攻撃の方向」の「バスターのタイプが持続性の場合」と同様の処理なので、解説は省略する。
・・攻撃の方向による符号の補正
攻撃の方向による符号の補正を行う。バスターの場合の記述は、以下の通りとなる。
ASのファイル:zero_buster_attack_enemy.txt
enemy_hit_attack*=zero_buster_attack_direction
・攻撃の角度
・・概要
↓セイバーの例。「ゼロの攻撃の角度」により、「ゼロの攻撃による敵の移動」の角度が変化する。
バスターの場合の記述は、以下の通りとなる。
ASのファイル:zero_buster_attack_enemy.txt
radian_enemy_hit_attack=Math.atan2(enemy._y-_parent._y,enemy._x-_parent._x)
恐らく、ロックマンゼロ4のヒート・ゲンブレムの亀虹砲の際には、このような値を算出することで、「ゼロの近接攻撃に対するガードの可否」を判定していると思われる。
最終更新:2020年12月19日 09:02