/*

	a24d_tale.h

	    電算室（スネークテイルズ用）

	2002/02/01 S.Kaneyoshi

	$Id: a24d_tale.h,v 1.14 2002/10/17 08:21:29 usr03379 Exp $

*/



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

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

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

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



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

#define		ITEM_POS_A24D_01	-8663	 -16000	 -52000		// 西側ロッカー一番上

#define		ITEM_POS_A24D_02	-8663	 -16000	 -51000		// 西側ロッカー一番上から二番目

#define		ITEM_POS_A24D_03	-8663	 -16000	 -50000		// 西側ロッカー一番上から三番目

#define		ITEM_POS_A24D_04	-8663	 -16000	 -49000		// 西側ロッカー一番下

#define		ITEM_POS_A24D_05	8663	 -16000	 -53000		// 東側ロッカー一番上

#define		ITEM_POS_A24D_06	8663	 -16000	 -52000		// 東側ロッカー一番下



#define		ITEM_POS_A24D_07	0		 -16000	 -52500		// 電算室机の下

#define		ITEM_POS_A24D_08	4000	 -16000	 -56500		// 電算室ノードの前

#define		ITEM_POS_A24D_09	2000	 -16000	 -58250		// 電算室北東

#define		ITEM_POS_A24D_10	-2500	 -16000	 -58250		// 電算室北西



#define		ITEM_POS_A24D_11	-8500	 -16000	 -53000		// 西側ロッカーの北側

#define		ITEM_POS_A24D_12	-8625	 -16000	 -59125		// 西側の壁のくぼみ

#define		ITEM_POS_A24D_13	8625	 -16000	 -59125		// 東側の壁のくぼみ

#define		ITEM_POS_A24D_14	-7500	 -16000	 -65500		// 北側の壁のくぼみ左

#define		ITEM_POS_A24D_15	7500	 -16000	 -65500		// 北側の壁のくぼみ右





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

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

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

#include	"a24d_tale_enemy.h"







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

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

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

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

	#if d:DEBUG_PRINT 

		print 'proc_set1-snake_tales'

	#endif



	// 共通システムの起動 $:クリア条件フラグ

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

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

}



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

	#if d:DEBUG_PRINT 

		print 'proc_set2-snake_tales'

	#endif



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

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

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

	

	// 全マップ共通基本キャラ設定

	command マップ設定 電算室 -set {

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

		@スネークテイルズ用変数設定

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

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

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

		@スネークテイルズ用アイテム設置

		@スネークテイルズ用解体Ｃ４設置

	}

}











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

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

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

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

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

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

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

	#if d:DEBUG_PRINT 

		print 'clear'

	#endif

}





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

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

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

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

	#if d:DEBUG_PRINT

		print 'sound_set-bomb_misson'

	#endif



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

	@サウンド効果音設定

}



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

	#if d:DEBUG_PRINT

		print 'bgm_set-bomb_misson'

	#endif

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

}





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

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

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

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

	#if d:DEBUG_PRINT

		print 'item_no_set'

	#endif

	switch ( $b:tales_story_no ) {

		// テイルズＡ

		case ( d:TALES_NO:A ) {

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

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



			} else if($:ボックス名 == 雑誌:01) {

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



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

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



			} else if($:ボックス名 == 止血剤:01) {

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



			}

		}

	}



	#if d:DEBUG_PRINT

		print $:ボックス名

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

	#endif

}











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

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

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

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

// 変数に関する設定

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

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

	#if d:DEBUG_PRINT

		print 'stage_var_set-bomb_misson'

	#endif

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

	// ドアに関する設定

	//		DOOR_FLAG_CLOSE			0		// 絶対開かない

	//		DOOR_FLAG_OPEN			1		// 絶対開く

	//		DOOR_FLAG_ENEMY_ONLY	2		// 敵兵のみ開く

	//		DOOR_FLAG_CLOSE_LEVEL	3		// カードレベルが足りなくて開かない

	//		DOOR_FLAG_OPEN_LEVEL	4		// カード持っているので開く

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

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

	if ( $b:tales_story_a <= d:TALES_A:ジェニファー遭遇前 ) {

		$$b:ドアフラグ[1] = d:DOOR_FLAG_CLOSE_LEVEL;		// 左扉

		$$b:ドアフラグ[2] = d:DOOR_FLAG_CLOSE_LEVEL;		// 右扉

	} else {

		$$b:ドアフラグ[1] = d:DOOR_FLAG_OPEN_LEVEL;		// 左扉

		$$b:ドアフラグ[2] = d:DOOR_FLAG_OPEN_LEVEL;		// 右扉

	}



}





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

// 敵兵に関する設定

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

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 { スネークテイルズＡ用攻撃兵セット_共通 }

}



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

	#if d:DEBUG_PRINT

		print 'commander_set-bomb_misson'

	#endif



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

	// 攻撃兵は待機所変更を行っているので名前を「攻撃兵」で固定すると便利

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

		-w スネークテイルズ用警備兵コマンダー \

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

		-d 電算室 \

		-r 0,-12000,-71000 電算室  0,-16000,-46000 電算室 \

		-c 0,-12000,-71000 電算室  0,-16000,-46000 電算室 \

		-x [ghq_area_alert_voice:w24d] \

		-y [ghq_caution_voice:w24d] \

		-v [ene_plant_voice:01] \

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

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

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

		-s d:ENE_STAGE_VR_ANOTHER \

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

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

}



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

	trap en004 d:PLAYER \

		-mask ？ \

		-exec {

			if( $3 == 入る ) {

				#if d:DEBUG_PRINT

					print '待機所変更01'

				#endif

				mesg アタッカー 攻撃兵 ルート変更 d:T_ER:電算室前待機Ｐ

				mesg アタッカー 攻撃兵:22 警戒ルート変更 d:T_ER:電算室前待機Ｐ

				mesg アタッカー 攻撃兵:23 警戒ルート変更 d:T_ER:電算室前待機Ｐ

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

			} else {

				#if d:DEBUG_PRINT

					print '待機所変更02'

				#endif

				mesg アタッカー 攻撃兵 ルート変更 d:T_ER:エレベータ前待機Ｐ

				mesg アタッカー 攻撃兵:22 警戒ルート変更 d:T_ER:エレベータ前待機Ｐ

				mesg アタッカー 攻撃兵:23 警戒ルート変更 d:T_ER:エレベータ前待機Ｐ

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

			}

		}

}





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

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

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

proc スネークテイルズ用アイテム設置 {

	#if d:DEBUG_PRINT

		print 'a24d_item_set-snake tales'

	#endif



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

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

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

	}



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

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

		@雑誌_初期設置 雑誌:01 d:ITEM_POS_A24D_11 0

	}



/*

	// Ｍ９弾薬 福島さん指示により削除 2002.08.29

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

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

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

	}

*/



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

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

		@止血剤_初期設置 止血剤:01 d:ITEM_POS_A24D_06 0

	}

}





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

// 爆弾解体関連

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

proc スネークテイルズ用解体Ｃ４設置 {

	#if d:DEBUG_PRINT

		print 'bomb_set'

	#endif



	local $$:爆弾解体終了フラグ;



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

		$$:爆弾解体終了フラグ = 0;

		chara 爆弾検知領域 爆弾もやもや -trap tales_a_bm001

	} else {

		$$:爆弾解体終了フラグ = 1;

	}



	chara 解体Ｃ４ 解体Ｃ４ \

		-position 0 -15250 -51000 \

		-rotate 1024,0,0 \

		-type 0 \

		-state $$:爆弾解体終了フラグ \

		-proc スネークテイルズ用解体Ｃ４処理後

}



proc スネークテイルズ用解体Ｃ４処理後 {

	#if d:DEBUG_PRINT

		print 'C4-bomb frozen!!!!!'

	#endif



	if ( $2 == 1 ) {

		//	解体した

		$b:tales_story_a = d:TALES_A:爆弾解体中;

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

		command 全体マップ爆弾配置解除 -bomb d:シェル１中央棟マップ



	} else if ( $2 == 0 ){

		//	爆発した

		@爆発ゲームオーバー処理 d:BOMB_EFFECT_ON

	}

}

