/*

	a24b_tale.h

	    シェル１中央棟Ｂ１（スネークテイルズ用設定ファイル）



	2002/05/24 H.Yoshiike

	$Id: a24b_tale.h,v 1.12 2002/09/13 11:40:36 usr03379 Exp $





*/





//------------------------------------------------------------

// 各ミッション別で使用するdefine

//------------------------------------------------------------

#define	MISSION_TALE	1	// スネークテイルズ用プロック起動用



#define 敵兵チェンジディレイタイム	360



// アイテム設置用ポジションリスト

// シェル１中央棟Ｂ１

#define		T_ITEM_POS_A24B_0_01	-11250	 -4500	 -64000		// 廊下南端

// ノード部屋

#define		T_ITEM_POS_A24B_1_01	4750	 -4500	 (-73500-287)	// ノード部屋ロッカー左

#define		T_ITEM_POS_A24B_1_02	5750	 -4500	 (-73500-287)	// ノード部屋ロッカー右

#define		T_ITEM_POS_A24B_1_03	10000	 -4750	 -71000			// ノード部屋ダクト内

// リフレッシュルーム

#define		T_ITEM_POS_A24B_2_01	-10500	 -4500	 (-68750-287)	// ロッカー一番左

#define		T_ITEM_POS_A24B_2_02	-9500	 -4500	 (-68750-287)	// ロッカー一番左から２番目

#define		T_ITEM_POS_A24B_2_03	-8500	 -4500	 (-68750-287)	// ロッカー一番左から３番目

#define		T_ITEM_POS_A24B_2_04	-7500	 -4500	 (-68750-287)	// ロッカー一番右

#define		T_ITEM_POS_A24B_2_05	-10500	 -4500	 -70500			// リフレッシュルーム自販機前





//------------------------------------------------------------

// スネークテイルズ用の敵兵配置プロック集

//------------------------------------------------------------

#include	"a24b_tale_enemy.h"











//*********************************************************************************************

// mode.hで呼び出されるプロック

//*********************************************************************************************



//------------------------------------------------------------

// chara マップの前に呼ばれるproc

//------------------------------------------------------------

proc スネークテイルズ用マップ定義前設定 {

	#if d:DEBUG_PRINT 

		print 'proc_set1-snake_tales'

	#endif



	switch ( $b:tales_story_no ) {

		// テイルズＡ

		case ( d:TALES_NO:A ) {

			// 共通システムの起動 $:クリア条件フラグ $:途中ステージフラグ(テイルズでは関係ない)

			@全ミッション共通システム設定 0

		}



	}

	command セットルートオフセット d:SCN:スネークテイルズ -c d:SCN:通常		// a_vardef.h のenum



}







//---------------------------------------------------

// chara マップ設定、常駐キャラ設定の後に呼ばれるproc

// ※ command マップ設定をしないと全マップに登録されます。

/* このステージで使用されるマップ名

シェル１中央棟Ｂ１

ノード部屋

リフレッシュルーム

*/

//---------------------------------------------------

proc スネークテイルズ用マップ定義後設定 {

	#if d:DEBUG_PRINT 

		print 'proc_set2-snake tales'

	#endif



	@プラント編全体マップ設定 d:シェル１中央棟マップ	// stdproc.hで定義

	// 爆弾マークのチェック

	@スネークテイルズＡ用マップ爆弾表示チェック



	switch ( $b:tales_story_no ) {

		// テイルズＡ

		case ( d:TALES_NO:A ) {

			// 全マップ共通で使用する基本キャラの設定

			command マップ設定 シェル１中央棟Ｂ１ ノード部屋 リフレッシュルーム -set {

				@スネークテイルズ用サウンド設定	// データは最初に呼ぶ

				@スネークテイルズＡ用変数設定		// ドアのスイッチなどの変数を設定

				@スネークテイルズＡ用コマンダー設定

				@スネークテイルズ用ＢＧＭ設定		// プレイヤー→敵兵→BGMの順で呼ぶ

			}

			command マップ設定 ノード部屋 -set {

				@スネークテイルズＡ用ノード部屋アイテム設置

			}

			command マップ設定 リフレッシュルーム -set {

				@スネークテイルズＡ用リフレッシュルームアイテム設置

			}

		}



		default {

			#if d:DEBUG_PRINT

				print 'WARNING!!!!!!!不正な値が入っています。$b:tales_story_no='$b:tales_story_no

			#endif



			command assert ( d:FALSE ) 'tales no error  (scenario err) スネークテイルズ用マップ定義後設定'

		}



	}

}











//*********************************************************************************************

// 各テイルズで共通で使用するプロック

//*********************************************************************************************



//------------------------------------------------------------

// クリアしたときの処理

//------------------------------------------------------------

proc スネークテイルズ用クリア時処理 {

	#if d:DEBUG_PRINT 

	print 'clear'

	#endif

}







//------------------------------------------------------------

// サウンドに関する設定

//------------------------------------------------------------

proc スネークテイルズ用サウンド設定 {

	#if d:DEBUG_PRINT 

		print 'sound_set-snake_tales'

	#endif



	chara サウンドマネージャー ＳＤマネ \

		-pak 0



	//		ＳＥ設定

	@サウンド効果音設定

}



proc スネークテイルズ用ＢＧＭ設定 {

	#if d:DEBUG_PRINT 

		print 'bgm_set-snake_tales'

	#endif



	chara ＢＧＭマネージャー ＢＧＭマネ

}







//------------------------------------------------------------

// アイテムに関する設定

//------------------------------------------------------------

proc スネークテイルズ用アイテム取得時番号設定 $:ボックス名 {

	#if d:DEBUG_PRINT

		print 'item_no_set-snake_tales'

	#endif



	switch ( $b:tales_story_no ) {

		// テイルズＡ

		case ( d:TALES_NO:A ) {

			if( $:ボックス名 == Ｍ９弾:01 ) {

				$b:w24b_取得ロード回数[0] = $w:グローバルロード回数;



			} else if ( $:ボックス名 == スタン:01 ) {

				$b:w24b_取得ロード回数[1] = $w:グローバルロード回数;



			} else if ( $:ボックス名 == レーション:01 ) {

				$b:w24b_取得ロード回数[2] = $w:グローバルロード回数;



			} else if ( $:ボックス名 == チャフ:01 ) {

				$b:w24b_取得ロード回数[3] = $w:グローバルロード回数;



			}

		}



		default {

			#if d:DEBUG_PRINT

				print 'WARNING!!!!!!!不正な値が入っています。$b:tales_story_no='$b:tales_story_no

			#endif



			command assert ( d:FALSE ) 'tales no error  (scenario err) スネークテイルズ用アイテム取得時番号設定'

		}



	}

	#if d:DEBUG_PRINT

		print $:ボックス名

		print $w:グローバルロード回数

	#endif

}











//*********************************************************************************************

// テイルズＡで使用するプロック

//*********************************************************************************************



//------------------------------------------------------------

// 変数に関する設定

//------------------------------------------------------------

proc スネークテイルズＡ用変数設定 {

	#if d:DEBUG_PRINT 

		print 'stage_var_set-snake_tales'

	#endif



	//------------------------------------------------------------

	// ドアに関する設定(0-開かない 1-開く)

	//------------------------------------------------------------

	eval( $$b:ドアフラグ[0] = d:DOOR_FLAG_OPEN );	// ノード部屋ドア

	if ( $b:tales_story_a < d:TALES_A:爆弾解体前 ) {

		eval( $$b:ドアフラグ[1] = d:DOOR_FLAG_OPEN );	// 人質部屋ドア

	} else {

		eval( $$b:ドアフラグ[1] = d:DOOR_FLAG_CLOSE );	// 人質部屋ドア

	}

	eval ($$b:ドアフラグ[2] = d:DOOR_FLAG_OPEN );	// エレベータドア

}







//------------------------------------------------------------

// 敵兵に関する設定

//------------------------------------------------------------



//	ここはクリアリング人数の関係で攻撃兵が警備兵をやってるので警備兵出ません

proc スネークテイルズＡ用警備兵コマンダー {

	#if d:DEBUG_PRINT

		print 'wccomm_set-snake_tales'

	#endif



	switch ($s:登場ポイント) {

		case (シェル１中央棟１Ｆから) {

		}



		case (人質部屋から) {

		}



		case (シェル１中央棟Ｂ３から) {

		}



		default {

		}



	}



}



proc スネークテイルズＡ用攻撃兵コマンダー {

	#if d:DEBUG_PRINT

		print 'atcomm_set-snake_tales'

	#endif



	switch ($s:登場ポイント) {

		case (シェル１中央棟１Ｆから) {

			chara 攻撃コマンダー atcomm \

				-e { 攻撃兵セット_共通 } \

				-avoidwait (60*10)		//	回避モードで始まる場合のみ有効

		}



		case (人質部屋から) {

			chara 攻撃コマンダー atcomm \

				-e { 攻撃兵セット_共通 } \

				-avoidwait (60*10)		//	回避モードで始まる場合のみ有効

		}



		case (シェル１中央棟Ｂ３から) {

			chara 攻撃コマンダー atcomm \

				-e { 攻撃兵セット_共通 } \

				-avoidwait (60*10)		//	回避モードで始まる場合のみ有効

		}



		default {

			chara 攻撃コマンダー atcomm \

				-e { 攻撃兵セット_共通 } \

				-avoidwait (60*10)		//	回避モードで始まる場合のみ有効

		}



	}



}



proc スネークテイルズＡ用コマンダー設定 {

	#if d:DEBUG_PRINT

		print 'commander_set-snake_tales'

	#endif



//	eval($i:通常巡回ルート番号 = d:T_ER:通常警邏Ｒ)

	eval($i:通常巡回ルート番号 = d:T_ER:通常警邏ハードＲ)



	chara コマンダー 敵兵セット \

		-a スネークテイルズＡ用攻撃兵コマンダー \

		-m $w:スタートアラートモード \

		-r 4750,-4500,-72750 ノード部屋 -10500,-4500,-70750 リフレッシュルーム \

		-c 4750,-4500,-72750 ノード部屋 -10500,-4500,-70750 リフレッシュルーム \

		-e	d:T_ER:通常警邏Ｒ 22 スネークテイルズＡ用敵兵巡回交代プロック \

			d:T_ER:通常警邏ハードＲ 16 スネークテイルズＡ用敵兵巡回交代プロック \

		-f	d:T_ER:通常警邏Ｒ 22 t:vc041034 t:vc041034_len \		//敵兵Ｂ「異状なし」

			d:T_ER:通常警邏ハードＲ 16 t:vc041034 t:vc041034_len \		//敵兵Ｂ「異状なし」

		//-j 1 7 4 t:vc045007 t:vc045007_len \				//敵兵Ｂ「警備を続けるぞ」ロッカークリアリングキャンセル

		-s d:ENE_STAGE_VR_ANOTHER \

		-v [ene_plant_voice:01] \

		-x [ghq_area_alert_voice:w24b] \

		-y [ghq_caution_voice:w24b] \

		-z $i:敵標準麻酔持続 \

		-o $i:敵標準気絶持続 \

		-b $w:敵標準再発生数 \

		-h $i:標準警戒時間 \

		-p 	-1,-1,-1,スネークテイルズＡ用警戒ルート移行プロック \

			0,-1,-1,リフレッシュルームクリアリング初期設定 \	//	a24b.gclで定義

			1,-1,-1,ノード部屋クリアリング初期設定 \	//	a24b.gclで定義

			2,-1,-1,おもしろクリアリング初期設定 \	//	a24b.gclで定義

			-2,-2,-2,クリアリングカメラＯＦＦ	//	a24b.gclで定義



	//	クリアリング設定

	@スネークテイルズＡ用クリアリング設定

	//	待機場所変更

	@スネークテイルズＡ用待機場所変更

}



proc スネークテイルズＡ用クリアリング設定 {

	//	クリアリングしない

//	mesg コマンダー 敵兵セット クリアリングエリアスキップオン 2

	//敵兵がいてもクリアリングに突入

	mesg コマンダー 敵兵セット クリアリング敵兵チェックスキップオン 0

	mesg コマンダー 敵兵セット クリアリング敵兵チェックスキップオン 1

}



proc スネークテイルズＡ用待機場所変更 {

	//	待機所変更

	if($i:プレイヤー初期Ｚ位置 > -69000){

		print '待機所変更０'

		mesg コマンダー 敵兵セット 待機所替え 0

		mesg アタッカー いけす攻撃兵 ルート変更 d:T_ER:東側待機Ｐ



	} else {

		print '待機所変更１'

		mesg コマンダー 敵兵セット 待機所替え 1

		mesg アタッカー いけす攻撃兵 ルート変更 d:T_ER:西側待機Ｐ

	}



	trap en001 d:PLAYER \

		-mask 出る \

		-exec {

			if ($6 > -69000){

				print '待機所変更０'

				mesg コマンダー 敵兵セット 待機所替え 0

				mesg アタッカー いけす攻撃兵 ルート変更 d:T_ER:東側待機Ｐ

			} else {

				print '待機所変更１'

				mesg コマンダー 敵兵セット 待機所替え 1

				mesg アタッカー いけす攻撃兵 ルート変更 d:T_ER:西側待機Ｐ

			}

		}



	//	敵兵ルートチェンジ

	mesg アタッカー 攻撃兵:01 ルート変更 $i:通常巡回ルート番号

	eval($b:シェル１Ｂ１巡回中敵兵 = 0)



	if ($w:スタートアラートモード == d:ALERT_MODE_SENNYU) {

		eval ($f:警戒モード中 = 0)

	} else {

		eval ($f:警戒モード中 = 1)

	}



	chara delay 警戒モードチェックディレイ \

		-time 1 \

		-exec {

			if ($w:アラートモード == d:ALERT_MODE_TANSAKU && !$f:警戒モード中) {

			#if d:DEBUG_PRINT

				print '警戒モードに移行！！！'

			#endif

				eval($f:警戒モード中 = 1)

				mesg アタッカー 攻撃兵:01 ルート変更 d:T_ER:警戒廊下北側左右Ｒ

				mesg アタッカー 攻撃兵:02 ルート変更 d:T_ER:警戒廊下南側右向きＲ

				mesg アタッカー 攻撃兵:03 ルート変更 d:T_ER:警戒廊下南側左向きＲ

			} else if ($w:アラートモード == d:ALERT_MODE_SENNYU && $f:警戒モード中) {

			#if d:DEBUG_PRINT

				print '潜入モードに移行！！！'

			#endif

				eval($f:警戒モード中 = 0)

				if ($b:シェル１Ｂ１巡回中敵兵 == 0) {

					mesg アタッカー 攻撃兵:01 ルート変更 $i:通常巡回ルート番号

					mesg アタッカー 攻撃兵:02 ルート変更 d:T_ER:リフレッシュ自販機前休憩Ｒ

					mesg アタッカー 攻撃兵:03 ルート変更 d:T_ER:リフレッシュ椅子前休憩Ｒ

				} else if($b:シェル１Ｂ１巡回中敵兵 == 1){

					mesg アタッカー 攻撃兵:01 ルート変更 d:T_ER:リフレッシュ南西休憩Ｒ

					mesg アタッカー 攻撃兵:02 ルート変更 $i:通常巡回ルート番号

					mesg アタッカー 攻撃兵:03 ルート変更 d:T_ER:リフレッシュ椅子前休憩Ｒ

				} else {

					mesg アタッカー 攻撃兵:01 ルート変更 d:T_ER:リフレッシュ南西休憩Ｒ

					mesg アタッカー 攻撃兵:02 ルート変更 d:T_ER:リフレッシュ自販機前休憩Ｒ

					mesg アタッカー 攻撃兵:03 ルート変更 $i:通常巡回ルート番号

				}

			}

			return -1

		}



	//	強襲クリアリング用

	trap ca005 d:PLAYER \

		-mask 出る \

		-exec {

			eval ($f:w24bリフレッシュクリアリング中 = 0)

		}



}





//こいつはコマンダーから呼び出されている

proc スネークテイルズＡ用敵兵巡回交代プロック {

	if ($b:シェル１Ｂ１巡回中敵兵 == 0) {

		mesg アタッカー 攻撃兵:01 ルート変更 d:T_ER:リフレッシュ南西休憩Ｒ

		chara delay 敵兵ルートチェンジディレイ \

			-time d:敵兵チェンジディレイタイム \

			-exec {

				mesg アタッカー 攻撃兵:02 ルート変更 $i:通常巡回ルート番号

				eval ($b:シェル１Ｂ１巡回中敵兵 = 1)

			}

	} else if ($b:シェル１Ｂ１巡回中敵兵 == 1){

		mesg アタッカー 攻撃兵:02 ルート変更 d:T_ER:リフレッシュ自販機前休憩Ｒ

		chara delay 敵兵ルートチェンジディレイ \

			-time d:敵兵チェンジディレイタイム \

			-exec {

				mesg アタッカー 攻撃兵:03 ルート変更 $i:通常巡回ルート番号

				eval ($b:シェル１Ｂ１巡回中敵兵 = 2)

			}

	} else if ($b:シェル１Ｂ１巡回中敵兵 == 2) {

		mesg アタッカー 攻撃兵:03 ルート変更 d:T_ER:リフレッシュ椅子前休憩Ｒ

		chara delay 敵兵ルートチェンジディレイ \

			-time d:敵兵チェンジディレイタイム \

			-exec {

				mesg アタッカー 攻撃兵:01 ルート変更 $i:通常巡回ルート番号

				eval($b:シェル１Ｂ１巡回中敵兵 = 0)

			}

	}

}



//こいつはコマンダーから呼び出されている

proc スネークテイルズＡ用警戒ルート移行プロック {

	#if d:DEBUG_PRINT

	print '警戒ルート移行するよ！！！！！！'

	#endif



	eval ($f:警戒モード中 = 1)

	mesg アタッカー 攻撃兵:01 ルート変更 d:T_ER:警戒廊下北側左右Ｒ

	mesg アタッカー 攻撃兵:02 ルート変更 d:T_ER:警戒廊下南側右向きＲ

	mesg アタッカー 攻撃兵:03 ルート変更 d:T_ER:警戒廊下南側左向きＲ

}







//------------------------------------------------------------

// アイテムに関する設定

//------------------------------------------------------------

proc スネークテイルズＡ用ノード部屋アイテム設置 {

	#if d:DEBUG_PRINT

		print 'a24b_item_set-snake_tales'

	#endif



	@アイテム再セットチェック $b:w24b_取得ロード回数[0]

	if ($f:再セットフラグ) {

		@弾薬_Ｍ９_初期設置 Ｍ９弾:01 d:T_ITEM_POS_A24B_1_03 0

	}



	@アイテム再セットチェック $b:w24b_取得ロード回数[1]

	if ($f:再セットフラグ) {

		@スタン_初期設置 スタン:01 d:T_ITEM_POS_A24B_1_02 0

	}

}



proc スネークテイルズＡ用リフレッシュルームアイテム設置 {

	#if d:DEBUG_PRINT

		print 'a24b_item_set-snake_tales'

	#endif



	@アイテム再セットチェック $b:w24b_取得ロード回数[2]

	if ($f:再セットフラグ) {

		@レーション_初期設置 レーション:01 d:T_ITEM_POS_A24B_2_05 0

	}



	@アイテム再セットチェック $b:w24b_取得ロード回数[3]

	if ($f:再セットフラグ) {

		@チャフ_初期設置 チャフ:01 d:T_ITEM_POS_A24B_2_01 0

	}

}







