・概要

 アイテム本体の処理に関して解説する。
 なお、全てのアイテムで共通の処理を行っている

↓アイテム本体と、アイテムの取得。

 原作とは異なり、「ライフ回復の際の一時停止」の処理は行わない(ロックマン&フォルテなどと同じ仕様)。

・loadの処理

・・アイテムの番号、アイテムの名前

 「アイテムの番号」は、アイテムの出現時に割り当てられる、アイテムの固有の番号のことである。
 「アイテムの名前」は、アイテムの種類であり、「・・ライフ回復量、エレメント残量回復量、リトライ増加量」の処理などにおいて用いられる。

↓アイテムのMCの例(ライフ回復(大))。hitrectのインスタンス名を「アイテムの名前」(この場合は"life_recovery_big")と設定している。

ASのファイル:item.txt
 
	number_item	//アイテムの番号
 
	item_name=this._name	//アイテムの名前
 

・・速度

 「・重力加速度の付加」「・移動」を参照。

ASのファイル:item.txt
 
	velocity_item=0	//アイテムの速度
 

・・ライフ回復量、エレメント残量回復量、リトライ増加量

 ライフ回復量、エレメント残量回復量、リトライ増加量を設定する。初期値は「0」となる。
 「アイテムの名前」により、それぞれの値が異なる。

ASのファイル:item.txt
 
	life_recovery=0	//ライフ回復量
	element_recovery=0	//エレメント残量回復量
	add_retry=0	//リトライ増加量
 
	if(item_name=="life_recovery_small"){life_recovery=8}	//ライフ回復(小)
︙
 

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

 各種地形との接触判定の初期値を代入している。

ASのファイル:item.txt
 
	for(i=1;i<=_root.i_landform_name_max;i++){this["hit_"+_root.landform_name_list[i-1]]=0}
 

・重力加速度の付加

 重力加速度を付加する。また、落下速度の制限の処理を行う。

ASのファイル:item.txt
 
		velocity_item+=_root.gravity	//重力加速度を付加
 
		if(velocity_item>_root.velocity_zero_jump){velocity_item=_root.velocity_zero_jump}	//落下速度の制限
 

・移動

 各種地形との接触判定がない場合は、移動する。

ASのファイル:item.txt
 
		if(hit_floor==0 and hit_sloped_floor==0 and hit_sink==0){_parent._y+=velocity_item}	//移動(地形による位置調整の前)
 

・各種地形との接触判定

 地形との接触判定の「・「接触判定」+「位置調整」」を参照。

 接触判定は1回のみ取得するようにしている。これは、(地形の出現判定用のMCとの接触判定がない場合など)地形が消滅した場合に、位置を固定するための措置となる。また、負荷軽減に関しても有効と思われる。
 このような条件にしているため、アイテムは地形移動などの影響を無視する。

ASのファイル:item.txt
 
		if(hit_floor==0 and hit_sloped_floor==0 and hit_sink==0){	//接触判定は1回のみ取得する}
 

・敵からのアイテムドロップの場合の消滅

 敵からのアイテムドロップの場合は、「敵・アイテムの出現判定用のMC」との接触判定がない場合に、出現判定をリセットし、MCを削除する

ASのファイル:item.txt
 
		if(_root.item_identify[number_item-1]==2 and this.hitTest(_root.enemy_item_appearance_hitrect)==false){_root.item_identify[number_item-1]=0;_parent.removeMovieClip()}	//敵からのアイテムドロップの場合・敵・アイテムの出現判定用のMCとの接触判定がない場合,出現判定をリセット,MCを削除
 

・ゼロとの接触判定

・・概要

 ゼロとの接触判定がある場合の処理に関して解説する。

 シャドウダッシュに関しては、フットチップの「・シャドウダッシュ」の「・・アイテムとゼロとの接触判定」を参照。

 前提となる条件は、以下の通りとなる。

ASのファイル:item.txt
 
			if(this.hitTest(_root.board.zero.zero_hitrect)){	//ゼロとの接触判定がある場合}
 

・・ライフの回復

 ゼロが全回復している場合に、サブタンクの残量が最大値ではない場合は、サブタンクを溜める。サブタンクの最大値より大きい場合は、補正する。
 ゼロが全回復していない場合は、ライフを回復させる。ゼロのライフの最大値より大きい場合は、補正する。

ASのファイル:item.txt
 
				if(_root.zero_life==_root.zero_initial_life){	//ゼロが全回復している場合
					if(_root.zero_subtank<_root.zero_subtank_max){_root.zero_subtank+=life_recovery}	//サブタンクの残量が最大値ではない場合,サブタンクを溜める
					if(_root.zero_subtank>_root.zero_subtank_max){_root.zero_subtank=_root.zero_subtank_max}	//最大値より大きい場合,補正する
				}
				else{
					_root.zero_life+=life_recovery	//ライフを回復させる
					if(_root.zero_life>_root.zero_initial_life){_root.zero_life=_root.zero_initial_life}	//最大値より大きい場合,補正する
				}
 

・・エレメント残量の回復

 「選択している属性」のエレメント残量を回復させる。エレメント残量の最大値より大きい場合は、補正する。

ASのファイル:item.txt
 
				_root["zero_element_remainder_"+_root.zero_element]+=element_recovery	//エレメント残量を回復させる
				if(_root["zero_element_remainder_"+_root.zero_element]>_root.zero_initial_element_remainder){_root["zero_element_remainder_"+_root.zero_element]=_root.zero_initial_element_remainder}	//最大値より大きい場合,補正する
 

・・リトライの増加

 リトライを増加させる。リトライの最大値より大きい場合は、補正する。

ASのファイル:item.txt
 
				_root.zero_retry+=add_retry	//リトライを増加させる
				if(_root.zero_retry>_root.zero_retry_max){_root.zero_retry=_root.zero_retry_max}	//最大値より大きい場合,補正する
 

・・アイテムの消滅

 アイテムの消滅エフェクトを付加し、出現判定をリセットし、MCを削除する。

ASのファイル:item.txt
 
				_root.board.attachMovie(["item_"+item_name+"_vanish"],["effect_"+_root.depth_effect_universal],_root.depth_effect_universal)	//アイテムの消滅エフェクトを付加_root.item_identify[number_item-1]=0;_parent.removeMovieClip()	//出現判定をリセット,MCを削除
 

最終更新:2020年12月12日 11:38