・連鎖値

 ゼロの攻撃には、それぞれ、「連鎖値」という値が設定されている。連鎖値には、「ボスに対する連鎖値」と「ボス以外に対する連鎖値」の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
 

・攻撃の角度

・・概要

 ゼロの攻撃と敵の角度を算出し、敵に伝達している。
 角度の算出に関する参考サイト(https://hakuhin.jp/as/shot.html)。
 この値も、「ゼロの攻撃による敵の移動」に用いられる場合がある。

↓セイバーの例。「ゼロの攻撃の角度」により、「ゼロの攻撃による敵の移動」の角度が変化する。

 バスターの場合の記述は、以下の通りとなる。

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