/*

	a15_bomb.h

	    ＢＣ連絡橋（アナザーミッション用モード別設定ファイル）



	2002/01/30 S.Mukaide

	$Id: a15_bomb.h,v 1.17 2002/08/21 08:07:20 usr03682 Exp $

*/



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

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

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

#define	MISSION_BOMB	1	// 爆弾解体用プロック起動用





// 爆弾の場所

#define		BOMB_POS_RAI	-50680 2250 -74000	0,0,0		// Ｃ脚入り口

#define		BOMB_POS_SNA	-52000 4750 -46000	0,2048,0	// Ｂ脚出口の上

#define		BOMB_POS_PRI	-55500 2750 -46000	0,2048,0	// Ｂ脚の壁

#define		BOMB_POS_TUX	-48850 1500 -72404	0,2048,0	// 連絡橋北側のタンクの北側

#define		BOMB_POS_NIN	-45250 -1425 -58950	0,2048,0	// 連絡橋切れたところ

#define		BOMB_POS_PRE	-49500 -750 -60925	1024,1024,0	// 連絡橋手すりの裏側



// アイテムの場所

#define		ITEM_POS_01		-50500	 0	 -74750	// Ｃ脚通路右

#define		ITEM_POS_02		-53375	 0	 -72625	// 連絡橋北西

#define		ITEM_POS_03		-50625	 0	 -72625	// 連絡橋北東

#define		ITEM_POS_04		-47750	 0	 -60000	// 連絡橋中央

#define		ITEM_POS_05		-50000	 0	 -59750	// 連絡橋中央手すりの陰

#define		ITEM_POS_06		-53375	 0	 -46500	// 連絡橋南西

#define		ITEM_POS_07		-50625	 0	 -46500	// 連絡橋南東



#include	"a_item_info.h"





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

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

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

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

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

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

proc 爆弾解体ミッション用マップ定義前設定 {

	#if d:DEBUG_PRINT 

		print 'proc_set1-bomb_misson'

	#endif



	if ( $f:爆弾解体ミッションＶＲウィンドウ表示フラグ == 0 ) {

		// 他のステージからロードしてきたときは前のステージのタイムを引き継ぐ

		$$i:ライデンタイム 				= $i:爆弾解体タイマー残り時間;

		$$i:スネークタイム 				= $i:爆弾解体タイマー残り時間;

		$$i:プリスキンタイム 			= $i:爆弾解体タイマー残り時間;

		$$i:タキシードスネークタイム 	= $i:爆弾解体タイマー残り時間;

		$$i:刀ライデンタイム 			= $i:爆弾解体タイマー残り時間;

		$$i:前作スネークタイム			= $i:爆弾解体タイマー残り時間;

	}



	// 共通システムの起動 (爆弾解体ミッションは共通で処理するようになったので引数は見なくなりました)

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



	// セレクトを押したときに出る説明

	@爆弾解体ミッションロード後用ＶＲウィンドウ設定

	// プレイヤーが動けるようになったらタイマーをスタートさせる処理

	@ロード時ＶＲタイマー処理



	$$i:ＶＲクリアフラグ = d:VRCLR_NO_RETRY;	// プログラムでＲＥＴＲＹをかけない

	@ＶＲクリア設定 p:A_ミッションエンド p:load_alt_bomb_a14a



	if ( $s:選択プレイヤー == 前作スネーク ) {

		// 前作スネークのときのみレーダーをオフにする

		// レーダーの設定

		command メニュー設定 -node_access off

	}

}







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

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

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

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

ＢＣ連絡橋

*/

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

proc 爆弾解体ミッション用マップ定義後設定 {

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

	command マップ設定 ＢＣ連絡橋 -set {

		@爆弾解体ミッション用サウンド設定	// データは最初に呼ぶ

		@爆弾解体ミッション用変数設定		// ドアのスイッチなどの変数を設定

		@爆弾解体ミッション用コマンダー設定

		@爆弾解体ミッション用ＢＧＭ設定		// プレイヤー→敵兵→BGMの順で呼ぶ

		@爆弾解体ミッション用サイファー配置

		@爆弾解体ミッション用アイテム設置

		@爆弾解体ミッション用解体Ｃ４設置

	}

}







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

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

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

proc 爆弾解体ミッション用クリア時処理 {

	#if d:DEBUG_PRINT 

	print 'clear'

	#endif



	@各ミッション共通モーションなしクリア処理

}







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

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

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

proc 爆弾解体ミッション用サウンド設定 {

	#if d:DEBUG_PRINT 

		print 'sound_set-bomb_misson'

	#endif



//	パックについて

	//	pak0	ハイテク兵無し

	//	pak1	ハイテク兵有り

	chara サウンドマネージャー ＳＤマネ -pak 0

	@サウンド効果音設定

}



proc 爆弾解体ミッション用ＢＧＭ設定 {

	#if d:DEBUG_PRINT 

		print 'bgm_set-bomb_misson'

	#endif



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

		-s 0x00000001

	chara ＢＧＭ風音 風音 \

		-s d:BGM_WINDNOISE_WEATHER_FAIN

}







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

// 変数に関する設定

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

proc 爆弾解体ミッション用変数設定 {

	#if d:DEBUG_PRINT 

		print 'stage_var_set-bomb_misson'

	#endif



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

	// ドアに関する設定

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

	eval ($$b:ドアフラグ[0] = d:DOOR_FLAG_OPEN);	// Ｂ脚ドア

	eval ($$b:ドアフラグ[1] = d:DOOR_FLAG_OPEN);	// Ｃ脚ドア

}







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

// 敵兵に関する設定

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

proc 爆弾解体ミッション用警備兵セット {

	#if d:DEBUG_PRINT 

		print 'watcher_set-bomb_misson'

	#endif

	//	A_警備兵 $:名前 $:ルート $:ノード $:ステータス $:守備Ｘ $:守備Ｙ $:守備Ｚ $:守備マップ



	//	Ｂ脚から来たとき

	if ($f:w15a_敵配置フラグ == d:STRUT_B) {

		@A_警備兵 敵兵:01 1 1 d:ENE_STATUS_REPORT -52000,0,-73000 ＢＣ連絡橋

	//	Ｃ脚から来たとき

	} else {

		@A_警備兵 敵兵:01 1 1 d:ENE_STATUS_REPORT -52000,0,-47000 ＢＣ連絡橋

	}

}



proc 爆弾解体ミッション用攻撃兵セット {

	#if d:DEBUG_PRINT 

		print 'attacker_set-bomb_misson'

	#endif

	//	A_攻撃兵 $:名前 $:ルート $:ステータス $:装備

	//	A_サポート攻撃兵 $:名前 $:ルート $:ステータス $:装備 $:サポートする敵兵名



	@A_サポート攻撃兵 敵兵:61 2 d:ENE_STATUS_CONVERT2 d:ENE_EQUIP_TYPE_NORMAL 敵兵:01

	@A_攻撃兵 敵兵:62 3 0 d:ENE_EQUIP_TYPE_NORMAL

}



proc 爆弾解体ミッション用警備兵コマンダー {

	#if d:DEBUG_PRINT

		print 'wccomm_set-bomb_misson'

	#endif



	chara 警備コマンダー wccomm -e { 爆弾解体ミッション用警備兵セット }

}



proc 爆弾解体ミッション用攻撃兵コマンダー {

	#if d:DEBUG_PRINT

		print 'atcomm_set-bomb_misson'

	#endif



	chara 攻撃コマンダー atcomm \

		-e { 爆弾解体ミッション用攻撃兵セット } \

		-wait (60*3) \			/*危険開始時の出動遅らせ時間*/

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

		-status 0x01

}



proc 爆弾解体ミッション用コマンダー設定 {

	#if d:DEBUG_PRINT

		print 'commander_set-bomb_misson'

	#endif



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

		-w 爆弾解体ミッション用警備兵コマンダー \

		-a 爆弾解体ミッション用攻撃兵コマンダー \

		-r -53250,0,-96000 ＢＣ連絡橋 -48500,0,-42500 ＢＣ連絡橋 \

		-c -53250,0,-96000 ＢＣ連絡橋 -48500,0,-42500 ＢＣ連絡橋 \

		-v [ene_plant_voice:01] \

		-x [ghq_area_alert_voice:w15a] \

		-y [ghq_caution_voice:w15a-2] \

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

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

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

		-s (d:ENE_STAGE_GPS | d:ENE_STAGE_VR_ANOTHER) \

		-f 1 0 t:vc044023 t:vc044023_len \

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

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

}



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

// サイファーに関する設定

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



proc 爆弾解体ミッション用サイファー破壊 $:サイファー名 {

	#if d:DEBUG_PRINT

		print 'cypher_destroy-bomb_misson'

	#endif



	if ($:サイファー名 == サイファー:01) {

		eval ($b:a15_サイファー破壊ロード回数[0] = $w:グローバルロード回数)

	}

}

proc 爆弾解体ミッション用サイファー配置 {

	#if d:DEBUG_PRINT

		print 'cypher_set-bomb_misson'

	#endif



	@サイファー再セットチェック $b:a15_サイファー破壊ロード回数[0]

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

		//	A_サイファ $:名前 $:ルート $:ノード $:視力 $:帰宅Ｘ１ $:帰宅１Ｙ１ $:帰宅Ｚ１ $:帰宅Ｘ２ $:帰宅Ｙ２ $:帰宅Ｚ２ $:速度

		if ($f:w15a_敵配置フラグ ==  d:STRUT_B) {

			@A_サイファ サイファー:01 4 0 6000 52000 10000 80000 52000 10000 200000 25

		} else if ($f:w15a_敵配置フラグ ==  d:STRUT_C) {

			@A_サイファ サイファー:01 5 0 6000 52000 10000 80000 52000 10000 200000 15

		}

	}

}



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

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

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

proc 爆弾解体ミッション用アイテム取得時番号設定 $:ボックス名 {

	#if d:DEBUG_PRINT

		print 'item_no_set-bomb_misson'

	#endif



	switch ( $:ボックス名 ) {

		// ライデン用

		case ( ＰＳＧ１本体:01 ) {

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

		}

		case ( ＡＫサプレッサ:01 ) {

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

		}

		// スネーク用

		case ( スタン:11 ) {

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

		}

		// プリスキン用

		case ( スタン:21 ) {

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

		}

		// タキシードスネーク用

		case ( ＵＳＰ本体:31 ) {

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

		}

	}

}



proc 爆弾解体ミッション用アイテム設置 {

	#if d:DEBUG_PRINT

		print 'w15_item_set-bomb_misson'

	#endif



	switch ( $s:選択プレイヤー) {

		case ( ライデン ) {

			// ＰＳＧ１

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

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

				@A_ＰＳＧ１_初期設置 ＰＳＧ１本体:01 d:ITEM_POS_05 0 なし 21

			}

			// ＡＫサプレッサ

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

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

				@A_ＡＫサプレッサ_初期設置 ＡＫサプレッサ:01 d:ITEM_POS_02 0

			}

		}

		case ( スネーク ) {

			// スタン

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

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

				@A_スタン_初期設置 スタン:11 d:ITEM_POS_04 0 5

			}

		}

		case ( プリスキン ) {

			// スタン

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

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

				@A_スタン_初期設置 スタン:21 d:ITEM_POS_06 0 2

			}

		}

		case ( タキシードスネーク ) {

			// ＵＳＰ本体

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

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

				@A_ＵＳＰ_初期設置 ＵＳＰ本体:31 d:ITEM_POS_02 0 なし 16

			}

		}

		case ( 刀ライデン ) {

		}

		default {

			// 前作スネーク

		}

	}

}





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

// 解体Ｃ４に関する設定

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

proc 爆弾解体ミッション用解体Ｃ４設置 {

	#if d:DEBUG_PRINT

		print 'a15a_bomb_set-bomb_misson'

	#endif



	switch ( $s:選択プレイヤー) {

		case ( ライデン ) {

			@A_解体Ｃ４設置 解体Ｃ４:01 d:BOMB_POS_RAI d:BOMB_A d:BOMB_LV5_NO:A15A 0 alt_a_bm001 もやもや:01

		}

		case ( スネーク ) {

			@A_解体Ｃ４設置 解体Ｃ４:11 d:BOMB_POS_SNA d:BOMB_A d:BOMB_LV5_NO:A15A 0 alt_a_bm002 もやもや:11

		}

		case ( プリスキン ) {

			@A_解体Ｃ４設置 解体Ｃ４:21 d:BOMB_POS_PRI d:BOMB_B d:BOMB_LV5_NO:A15A 0 alt_b_bm001 もやもや無し

		}

		case ( タキシードスネーク ) {

			@A_解体Ｃ４設置 解体Ｃ４:31 d:BOMB_POS_TUX d:BOMB_B d:BOMB_LV5_NO:A15A 0 alt_b_bm002 もやもや無し

		}

		case ( 刀ライデン ) {

			@A_解体Ｃ４設置 解体Ｃ４:41 d:BOMB_POS_NIN d:BOMB_B d:BOMB_LV5_NO:A15A 0 alt_b_bm003 もやもや無し

		}

		default {

			// 前作スネーク

			@A_解体Ｃ４設置 解体Ｃ４:51 d:BOMB_POS_PRE d:BOMB_A d:BOMB_LV5_NO:A15A 0 alt_a_bm003 もやもや:51

		}

	}

}



// 爆弾を解体したときに呼ばれるプロック

proc A_各ステージ別爆弾解体時処理 $:p_解体爆弾名 {

	#if d:DEBUG_PRINT

		print 'a15a_bomb_disposal $:p_解体爆弾名='$:p_解体爆弾名

	#endif



	switch ( $:p_解体爆弾名 ) {

		case ( 解体Ｃ４:01 ) {

			// ライデン

			$b:A_爆弾解体終了状態フラグ[d:BOMB_LV5_NO:A15A] = 1;

			mesg 爆弾検知領域 もやもや:01 消去 d:BOMB_RADAR_OFF_TIME

		}

		case ( 解体Ｃ４:11 ) {

			// スネーク

			$b:A_爆弾解体終了状態フラグ[d:BOMB_LV5_NO:A15A] = 1;

			mesg 爆弾検知領域 もやもや:11 消去 d:BOMB_RADAR_OFF_TIME

		}

		case ( 解体Ｃ４:21 ) {

			// プリスキン

			$b:A_爆弾解体終了状態フラグ[d:BOMB_LV5_NO:A15A] = 1;

			command トラップ切り替え -trap alt_b_bm001 -switch 0

		}

		case ( 解体Ｃ４:31 ) {

			// タキシードスネーク

			$b:A_爆弾解体終了状態フラグ[d:BOMB_LV5_NO:A15A] = 1;

			command トラップ切り替え -trap alt_b_bm002 -switch 0

		}

		case ( 解体Ｃ４:41 ) {

			// 刀ライデン

			$b:A_爆弾解体終了状態フラグ[d:BOMB_LV5_NO:A15A] = 1;

			command トラップ切り替え -trap alt_b_bm003 -switch 0

		}

		case ( 解体Ｃ４:51 ) {

			// 前作スネーク

			$b:A_爆弾解体終了状態フラグ[d:BOMB_LV5_NO:A15A] = 1;

			mesg 爆弾検知領域 もやもや:51 消去 d:BOMB_RADAR_OFF_TIME

		}

		default {

			command assert ( d:FALSE ) 'bomb disposal error (scenario err) A_爆弾解体時処理 想定外の名前の爆弾を解体しました。'

		}

	}



	// このエリアは全キャラ爆弾がひとつなので、解体したらマップの爆弾マークを取る

	command ＶＲ全体マップ表示３Ｄ＿爆弾解除 -b d:F_PLANT_BC

	$i:A_全体マップ爆弾設置ステージ = ( $i:A_全体マップ爆弾設置ステージ & ~(d:F_PLANT_BC) );

}



